为什么mysqli_insert_id()总是返回0? [英] Why is mysqli_insert_id() always returning 0?

查看:349
本文介绍了为什么mysqli_insert_id()总是返回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属性的列的表上进行的.如果最后一个查询不是INSERTUPDATE语句,或者修改后的表中没有具有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 or UPDATE statement or if the modified table does not have a column with the AUTO_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆