PHP mysqli::$insert_id / mysqli_insert_id() 函数返回由 INSERT 或 UPDATE 查询生成的 ID包含具有 AUTO_INCRMENT 属性的列的表。对于多行 INSERT 语句,它返回成功插入的第一个自动生成的值。
使用 LAST_INSERT_ID() MySQL 函数执行 INSERT 或 UPDATE 语句还修改 mysqli_insert_id() 返回的值。如果使用LAST_INSERT_ID(expr)生成AUTO_INCRMENT的值,则它返回最后一个expr的值,而不是生成的AUTO_INCRMENT值。
语法
//面向对象风格
$mysqli->insert_id;
//面向过程风格
mysqli_insert_id(mysql)
参数
mysql | 必需。 仅适用于面向过程风格:指定 mysqli_connect() 或 mysqli_init() 返回的 mysqli 对象。 |
返回值
返回由上一个查询更新的 AUTO_INCREMENT 字段的值。如果连接上没有先前的查询或者查询未更新 AUTO_INCRMENT 值,则返回零。
只有使用当前连接发出的语句才会影响返回值。该值不受使用其他连接或客户端发出的语句的影响。
注意:如果数字大于最大 int 值,则会返回作为字符串。
示例:面向对象风格
下面的示例显示了mysqli::insert_id属性的用法。请注意,数据库必须包含 AUTO_INCRMENT 字段。
<?php
//建立与数据库的连接
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: ". $mysqli->connect_error;
exit();
}
$query = "INSERT INTO Employee (Name, City, Salary) VALUES ('John', 'London', 2800)";
$mysqli->query($query);
printf("New record has ID %d.\n", $mysqli->insert_id);
//关闭连接
$mysqli->close();
?>
上述代码的输出将类似于:
New record has ID 1.
示例:面向过程风格
下面的示例显示了mysqli_insert_id()函数的用法。请注意,数据库必须包含 AUTO_INCRMENT 字段。
<?php
//建立与数据库的连接
$mysqli = mysqli_connect("localhost", "user", "password", "database");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ". mysqli_connect_error();
exit();
}
$query = "INSERT INTO Employee (Name, City, Salary) VALUES ('John', 'London', 2800)";
mysqli_query($mysqli, $query);
printf("New record has ID %d.\n", mysqli_insert_id($mysqli));
//关闭连接
mysqli_close($mysqli);
?>
上述代码的输出将类似于:
New record has ID 1.