2016-08-02 7 views
1

Hallo, als ich versuchte, einen leeren Wert für einen Primärschlüssel in einer Tabelle zu übergeben, gab es mir einen Fehler und es wird nicht erstellt/aktualisieren. Zum Beispiel sagen ID ist Primärschlüssel mit automatischer Erhöhung INSERT INTO Client (ID, Fname, Lname) WERTE ('', 'Bob', 'Smith') wird nicht funktionieren.PHP mysql auto Inkrement übergeben BLANK in Datenbank

Wie kann ich einen leeren Wert für einen Primärschlüssel mit automatischer Erhöhung übergeben?

unten ist ein Teil meines Code:

protected static $table_name="client"; 
protected static $db_fields=array('id', 'fname', 'lname'); 
public $id; 
public $fname; 
public $lname; 
...more code 

public function create() { 

    global $database; 
    $attributes = $this->sanitized_attributes(); 
    $sql = "INSERT INTO ".self::$table_name." ("; 
    $sql .= join(", ", array_keys($attributes)); 
    $sql .= ") VALUES ('"; 
    $sql .= join("', '", array_values($attributes)); 
    $sql .= "')"; 
    ...more code 

} 

es viel mehr Code, aber ich kann sie alle hier nicht posten. Ich habe array_shift() versucht, um den ersten Schlüssel loszuwerden, der id ist, aber es gab mir einen Fehler. Dieser ganze Code befindet sich in einer Klasse mit dem Namen Client

+2

können Sie einfach ignorieren 'id' Spalte, wenn es Autoinkrement ist. Oder Sie können 'NULL' übergeben – Ahmad

+0

Was ist, wenn ich' ID' Spalte haben muss? Gibt es irgendeine Möglichkeit, dass ich eine Lücke weitergeben kann und es mir keinen Fehler gibt? –

Antwort

1

Wenn Ihr ID-Feld Primärschlüssel und Autoinkrement ist, dann müssen Sie es nicht in der Einfügeabfrage übergeben. Entfernen Sie das ID-Feld und versuchen Sie, weitere Felder einzufügen.

Ihre Abfrage sollte wie:

INSERT INTO client (fname, lname) VALUES ('bob', 'smith') 

Anstelle von:

INSERT INTO client (id, fname, lname) VALUES ('', 'bob', 'smith')