【发布时间】:2014-08-10 17:52:43
【问题描述】:
我正在使用mysqli准备好的语句在表中插入这样的记录
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
mysqli_stmt_execute($stmt);
if(mysqli_stmt_affected_rows($stmt) > 0){
//if insert is successful then get the insrted id.
}
/* close statement and connection */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($link);
并且想获取最后插入的 id ,因为该表具有自动递增的 record_num 字段。
所以我的问题是我应该在函数中放置连接名称还是语句名称。
即 1)
echo mysqli_insert_id($link);
来源:http://php.net/manual/en/mysqli.insert-id.php
2)
echo mysqli_stmt_insert_id($stmt);
来源:http://php.net/manual/en/mysqli-stmt.insert-id.php
哪一个是正确的? 哪一个会通过 $stmt 给我最后插入的 id?
- 没有其他插入正在使用相同的 stmt 一个相同的页面完成..*
更新:
根据http://php.net/manual/en/mysqli-stmt.insert-id.php的备注
我只做单次插入,所以我想我可以使用
mysqli_stmt_insert_id($stmt)
但是在使用准备好的语句进行多次插入时使用
echo mysqli_insert_id($link);
是最佳实践。
【问题讨论】:
标签: php mysqli prepared-statement