mariadb PHP-8.2 insert_id返回0

szqfcxe2  于 7个月前  发布在  PHP
关注(0)|答案(1)|浏览(79)

我知道这个问题已经被问过很多次了,我觉得有点愚蠢,但我不能让它工作。因此,我尝试在调用一个插入单行数据的预准备语句后获取insert_id。返回值始终为0。我做错了什么?
我使用的是PHP-8.2,所以execute_query()是一个有效的函数。这也是在一个事务中,但是我已经在没有事务的情况下测试过了,结果是一样的。insert_id也不在结果中(我测试了一下)

$this->db->execute_query('CALL preparedINSERTStatement(?, ?)', [$value1, $value2]);
$id = $this->db->insert_id;

如果你需要更多的信息,我没有包括随时问!

mrphzbgm

mrphzbgm1#

insert_id的值在MariaDB服务器发送给客户端的OK包中返回。
对于存储过程中的每个SQL命令,服务器都会发送一个OK包。此外,在结束时将发送一个OK包,它指示存储过程是否成功执行。最后一个ok包覆盖前一个OK包:由于没有插入数据,因此insert_id为零。
如果需要从存储过程中执行的语句中检索insert_id,请使用SELECT last_insert_id()

相关问题