0

将新记录插入到具有自动递增 ID 列的表中时,通常将 ID 字段的值设为 NULL 或从 INSERT 查询中省略它就足够了,如如何插入新的自动递增 ID 中所述

INSERT INTO  `database`.`table` (`id`, `user`, `result`) VALUES (NULL, 'Alice', 'green')");

或者

INSERT INTO  `database`.`table` (`user`, `result`) VALUES ('Alice', 'green')");

我的问题是 - 在使用准备好的语句时你如何做同样的事情。我尝试了以下方法,使用 NULL:

$stmt = $db->prepare("INSERT INTO `db` (id, name, password, text) VALUES (NULL, ?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();

以及以下,省略 ID 字段:

$stmt = $db->prepare("INSERT INTO `test_db` (name, password, text) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();

当我运行它时,我没有插入任何内容,浏览器中也没有错误消息。我认为这是因为它试图为 ID 字段插入重复值(stackoverflow.com/questions/12179770/…) - 但是当这似乎等同于插入数据的非准备语句方式时为什么应该这样做,然后不给任何消息,我不确定。

欢迎任何想法!

4

0 回答 0