我有一个名为“id”的列的mysql表 - 此列设置了自动增量。
我只想知道如何使用PHP和PDO获得下一个自动增量值,而无需执行INSERT INTO查询。 (我发现了一些关于此问题的问题 - 但没有INSERT INTO且仅基于mysqli)。
谢谢!
答案 0 :(得分:1)
你为什么需要这个?
如果需要,您可以获得这样的当前自动增量值,但我没有看到需要这样的情况。
SELECT `AUTO_INCREMENT`
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND TABLE_NAME = 'TableName';
更多信息:
答案 1 :(得分:0)
这个问题的陈述是错误的 你实际上并不需要它,因为没有INSERT查询这个值绝对没有意义。
虽然我确实理解PHP语言的简单性欢迎任何人进入网络编程世界,但它仍然需要一些知识。您必须了解的一件事是自动增量唯一标识符的用途和含义。这不是你的想法。只有在插入之后才有意义。
因此,可能只有两种可能的情况:
答案 2 :(得分:0)
我可以看到你想要/需要这个的原因。我们将其作为新客户的安全保护的一部分,以保持关键'唯一的,无需向DB发送其他查询。
$q = $db->query("SHOW TABLE STATUS LIKE 'yourtable'");
$next = $q->fetch(PDO::FETCH_ASSOC);
echo $next['Auto_increment'];
答案 3 :(得分:0)
一线解决方案:
$var = $db->query("SHOW TABLE STATUS LIKE 'my_table'")->fetch(PDO::FETCH_ASSOC)['Auto_increment'];
答案 4 :(得分:0)
请小心,因为在您询问下一个ID与您要使用它的时间之间,某个并发查询可以插入新记录,并且您获得的ID不再有效
假设您想在不知道姓名的情况下添加新人记录,而要放置newPerson
获取ID 写入db newPerson
但这可能发生:
获取1个ID get2 id 将1写入db newPerson 将2写入db newPerson
其中1和2是两个同时执行的并发脚本
简单的解决方法是使用交易,以避免这种情况