我正在使用 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 字段,该字段是自动递增的。
所以我的问题是我应该将连接名称或语句名称放在函数内。
i.e
1)
echo mysqli_insert_id($link);
Source: http://php.net/manual/en/mysqli.insert-id.php http://php.net/manual/en/mysqli.insert-id.php
2)
echo mysqli_stmt_insert_id($stmt);
Source: http://php.net/manual/en/mysqli-stmt.insert-id.php http://php.net/manual/en/mysqli-stmt.insert-id.php
哪一个是正确的?
哪一个会给我 $stmt 最后插入的 id ?
- 没有其他插入正在使用相同的 stmt 完成同一页..*
Update:
根据注释http://php.net/manual/en/mysqli-stmt.insert-id.php http://php.net/manual/en/mysqli-stmt.insert-id.php
我只做单个插入,所以我想我可以使用
mysqli_stmt_insert_id($stmt)
但是在使用准备好的语句进行多次插入时
echo mysqli_insert_id($link);
是最佳实践。