我有以下代码:
<?php
header('Content-Type: text/plain');
$db = new mysqli('localhost', 'username', 'password', 'my_schema');
$db->autocommit(false); // start transaction
$sql = "INSERT INTO my_table (col1, col2) VALUES (1, 2)";
$db->query($sql);
// $last_id = $db->insert_id;
// echo 'Last ID before commit: ' . $last_id . PHP_EOL;
$db->commit();
$db->autocommit(true); // end transaction
$last_id = $db->insert_id;
echo 'Last ID after commit: ' . $last_id . PHP_EOL;
$db->close();
?>
上述代码的输出是:
Last ID before commit: 1 <-- if uncomment the 2 lines above, it will show this
Last ID after commit: 0
insert_id
在autocommit
之外不起作用(返回0),即使它已正确提交&amp;插入数据库。这是预期的行为吗?
答案 0 :(得分:1)
关于代码的一些事情:
答案 1 :(得分:-2)
请试试这个
$last_id = mysqli_insert_id($link);
$link
是使用mysqli_connect(...)
的数据库对象。这将为您提供自动增量列