PHP MySQLi 函数

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.