为什么mysqli_insert_id()总是返回0?

我有以下代码。应该返回表的最后一行的mysqli_insert_id()(在本例中为“ $ last_row”)始终返回0。为什么会这样呢?

<?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。从文档中,它:

…返回由查询产生的ID,该查询是对具有具有AUTO_INCREMENT属性的列的表进行的。如果最后一个查询不是INSERTor

UPDATE语句,或者如果修改后的表没有带有AUTO_INCREMENT属性的列,则此函数 。

(我的重点)

也就是说,如果要在自动生成ID的插入 立即运行它,则 与插入相同的连接上,它将返回为该插入生成的ID。

上面链接的文档中的示例对此进行了说明:

$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? 的全部内容, 来源链接: utcz.com/qa/413580.html

回到顶部