PDO插入最大ID + 1而不是auto_increment

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDO插入最大ID + 1而不是auto_increment相关的知识,希望对你有一定的参考价值。

我不想使用mysql的自动增量,但我希望获得max id + 1作为下一个数据的ID插入。

我试着做How to get auto increment id by PDO before execute但没有运气。

$sql = "INSERT INTO checklist ((SELECT MAX(checklist_id)+1), checklist_name ) VALUES (NULL, :checklist_name)";

$pdo_statement = $pdo_conn->prepare( $sql );

$result = $pdo_statement->execute ((array(':maxid'=>NULL,':checklist_name'=>$_POST['checklist_name']));

你能帮我解决它应该是什么代码吗?

答案

编辑:正如其中一位评论员所指出的那样;不建议在MySQL数据库中没有PRIMARY Key

您的SQL查询错误。您需要单独包含列和值。

$ sql =“INSERT INTO checklist((SELECT MAX(checklist_id)+1),checklist_name)VALUES(NULL,:checklist_name)”;

要使INSERT语句正确,请查看documentation

INSERT INTO table (column, column, etc.) VALUES (value, value, etc.)

因此,为了使您的陈述正确,您将不得不切换一些变量

INSERT INTO checklist (checklist_id, checklist_name) VALUES ((SELECT MAX(checklist_id)+1 FROM checklist), :checklist_name)

带有绑定值的数组将如下所示

array(':checklist_name' => $_POST['checklist_name'])

如果您遇到任何SQL语法问题,可以查看documentationw3schools tutorials

以上是关于PDO插入最大ID + 1而不是auto_increment的主要内容,如果未能解决你的问题,请参考以下文章

调试 PDO mySql 将 NULL 插入数据库而不是空

无法选择最后插入的 id 为 [Mysql, php pdo oop] [重复] 的行

MySQL:在没有 auto_increment 的情况下获取最后插入的主键

使用 PDO 插入时忽略重复键

多线程单连接中的 PDO::lastInsertId() 是不是安全?

MySQL InnoDB auto_increment 值增加 2 而不是 1。病毒?