2010-02-09 13 views
8

Sto lavorando su una tabella che ha 4 colonne e la prima è un intero autoincrementante chiamato id.PHP Mysqli che inserisce una riga in una tabella con colonna auto_increment

Se sto andando a inserire in questa tabella usando le istruzioni create su mysqli, continuo ad avere problemi nell'inserire una query che funziona. Usando PHPmyAdmin Mi dice di darlo NULL. Ive ha provato questo:

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES ('NULL', ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

e questo

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

e solo dare bind_param 3 argomenti (l'ultimo 3). Nessuno di quei lavori. Ho anche provato questo:

$null = NULL; 
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (?, ?, ?, ?)"; 
$stmt -> bind_param("issi", $null, $col2, $col3, $col4); 

Nessuno di questi lavori. Esiste un modo standardizzato di inserimento in questo tipo di tabella?

+0

vuoi anche inserire il campo auto-incremtn in modo esplicito? – Sarfraz

risposta

12

saltare il campo id, MySQL riempirà automaticamente:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 
$stmt->bind_param("ssi", $col2, $col3, $col4) 
+0

Grazie mille. Questa risposta dovrebbe essere contrassegnata come risposta corretta per favore. – Edwinfad

2

Questo

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"; 
$stmt -> bind_param("ssi", $col2, $col3, $col4) 

dovrebbero sicuramente lavorare. Qual è l'errore esatto che ottieni?

Ora ho un aspetto migliore, hai $ query e $ stmt. Cosa hai in mezzo? Probabilmente ti manca una parte.

Dovrebbe essere

$stmt = $mysqli->prepare("INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)"); 
$stmt -> bind_param("ssi", $col2, $col3, $col4); 
$stmt ->execute(); 
3

Questo dovrebbe funzionare, perché id viene aggiunto automaticamente (incrementato per questo motivo) da MySQL:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 

In alcuni casi, è necessario inserire auto_incremtnt campo in modo esplicito , se questo è il caso, è possibile utilizzare la dichiarazione INSERT IGNORE, consultare il manuale di MySQL per maggiori informazioni a riguardo.

4

Se il campo è il idauto_increment, poi basta non specificare nel vostro insert query:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)"; 

E, naturalmente, non cercare di associare qualsiasi parametro ad esso ;-)


Poiché è generato da MySQL, non è necessario passare tale colonna.

Problemi correlati