为什么mysqli_insert_id()总是返回0? [英] Why is mysqli_insert_id() always returning 0?
问题描述
我有以下代码.应当返回表的最后一行的mysqli_insert_id()(在本例中为"$ last_row")始终返回0.为什么这样?
I have the following code. The mysqli_insert_id() (in this case "$last_row"), which is supposed to return the last row of the table, is always returning 0. Why is it so?
<?php
include('connect-db.php');
$submit_date = date("Ymd");
$content = mysqli_real_escape_string($connection, htmlspecialchars($_POST['editor']));
$ip_address = $_SERVER['REMOTE_ADDR'];
$last_row = mysqli_insert_id($connection);
if ($content != '') {
$sql = "INSERT INTO source ( track_id, submit_date, ip, content) VALUES ('$last_row', '$submit_date','$ip_address','$content')";
if (!mysqli_query($connection,$sql))
{
die('Error: ' . mysqli_error($connection));
}
echo $last_row;
mysqli_close($connection);
}
?>
推荐答案
mysqli_insert_id
不会不返回表最后一行的ID.从文档中,
mysqli_insert_id
does not return the ID of the last row of the table. From the docs, it:
...返回由查询生成的ID,该查询是在具有具有AUTO_INCREMENT属性的列的表上进行的.如果最后一个查询不是
INSERT
或UPDATE
语句,或者修改后的表中没有具有AUTO_INCREMENT
属性的列,则此函数将返回零.
...returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an
INSERT
orUPDATE
statement or if the modified table does not have a column with theAUTO_INCREMENT
attribute, this function will return zero.
(我的重点)
也就是说,如果要在自动生成ID的插入后 后立即运行它,则在与插入操作相同的连接上,它将返回为该插入生成的ID.
That is, if you were to run it immediately after an insert that auto-generated an ID, on the same connection you did the insert with, it would return the ID generated for that insert.
在上面链接的文档中的示例说明了这一点:
This is illustrated by the example in the docs linked above:
$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);
printf ("New Record has id %d.\n", $mysqli->insert_id);
这篇关于为什么mysqli_insert_id()总是返回0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!