Php 使用准备好的语句插入自动递增的ID

Php 使用准备好的语句插入自动递增的ID,php,mysql,insert,prepared-statement,Php,Mysql,Insert,Prepared Statement,将新记录插入到具有自动递增ID列的表中时,通常只需将ID字段的值设为NULL或从INSERT查询中忽略它,如中所述 或 我的问题是——当使用准备好的语句时,如何做同样的事情。我使用NULL尝试了以下操作: $stmt = $db->prepare("INSERT INTO `db` (id, name, password, text) VALUES (NULL, ?, ?, ?)"); $stmt->bind_param('sss', $name, $password, $text)

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

我的问题是——当使用准备好的语句时,如何做同样的事情。我使用NULL尝试了以下操作:

$stmt = $db->prepare("INSERT INTO `db` (id, name, password, text) VALUES (NULL, ?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();
和fowlowing,省略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/…)——但我不确定,当这似乎相当于插入数据的非准备语句方式时,它为什么要这样做,然后不给出任何消息


欢迎任何意见

“两者都不起作用”是什么意思?发生了什么?预处理语句与查询中的文本空值无关。您的问题出在其他地方我没有插入任何内容,浏览器中也没有错误消息。我认为这是因为它试图为ID字段()插入一个重复的值-但为什么它应该这样做,因为这似乎相当于插入数据的非准备语句方式,然后不给出任何消息,我不确定。
浏览器中没有错误消息。
-您没有要求它。给你:谢谢,你的常识-链接导致`。。。或者触发_错误($mysqli->error)`,这确认了这是重复的主键问题。数据库结构已更改,因此自动增量不再起作用。在重新初始化数据库之后,现在一切正常。
$stmt = $db->prepare("INSERT INTO `db` (id, name, password, text) VALUES (NULL, ?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();
$stmt = $db->prepare("INSERT INTO `test_db` (name, password, text) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();