Вставка строки к таблице с auto_increment столбцом

Я работаю над таблицей, которая имеет 4 столбца, и первый является автоматическим целым числом постепенного увеличения, названным идентификатором.

Если я собираюсь вставить в эту таблицу с помощью mysqli подготовленные операторы, я продолжаю испытывать затруднения, вставляющие запрос, который работает. Используя phpMyAdmin Это говорит мне давать ему ПУСТОЙ УКАЗАТЕЛЬ. Я попробовал это:

$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);

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

12
задан Dharman 7 November 2019 в 21:04
поделиться

4 ответа

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

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
$stmt->bind_param("ssi", $col2, $col3, $col4)
17
ответ дан 2 December 2019 в 04:43
поделиться

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

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

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


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

7
ответ дан 2 December 2019 в 04:43
поделиться

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

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

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

5
ответ дан 2 December 2019 в 04:43
поделиться

Этот

$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
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: