2010-02-09 3 views
8

Im работает над таблицей, которая имеет 4 столбца, а первая - автоматически увеличивающееся целое число id.PHP Mysqli, вставляющий строку в таблицу с столбцом auto_increment

Если im собирается вставить в эту таблицу с помощью подготовленных инструкций mysqli, у меня все время возникает проблема с вставкой запроса, который работает. Использование PHPmyAdmin Это говорит мне дать ему NULL. Ive попытался это:

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

и это

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

и только дают bind_param 3 аргумента (последняя 3). Ни один из них не работает. Я также пробовал это:

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

Ничего из этого не работает. Существует ли стандартизированный способ вставки в этот тип таблицы?

+0

do u также хотите вставить поле auto-incremtn явно? – Sarfraz

ответ

12

Просто пропустить id поле, MySQL будет заполнить его автоматически:

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

Большое вам спасибо. Этот ответ должен быть помечен как правильный ответ. – Edwinfad

2

Это один

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

, безусловно, должны работать. Какая именно ошибка вы получаете?

Теперь я выгляжу лучше, у вас есть $ query и $ stmt. Что у вас есть между ними? Возможно, вам не хватает части.

Это должно быть

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

Это должно работать, так как идентификатор добавляется автоматически (увеличивается по этой причине) по MySQL:

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

В некоторых случаях, вы должны вставить auto_incremtnt поле явно , если это так, то вы можете использовать оператор INSERT IGNORE, см. руководство по mysql для получения дополнительной информации об этом.

4

Если id поле является auto_increment, то просто не указать его в запросе insert:

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

И, конечно же, не пытайтесь связать любой параметр это ;-)


Поскольку он генерируется MySQL, нет необходимости передавать этот столбец.

Смежные вопросы