使用PHP,MySQLi和Prepared Statement,我如何返回插入行的id?

Ren*_*ani 36 php mysql mysqli prepared-statement

我想检索数据库中插入行的id,但我不知道如何做到这一点.

我试图使用SQL子句返回RETURNING id,但不起作用.

如何在插入行后返回id?

Ren*_*ani 80

在调用execute()方法之后PreparedStatement,插入行的id将在insert_id属性中.只读它.

$pstm->execute();
$pstm->insert_id;
Run Code Online (Sandbox Code Playgroud)

  • 但是它会为每次执行返回一个对应的唯一 ID 吗?[文档](http://php.net/manual/en/mysqli-stmt.insert-id.php#102299) 下的最高评论说你应该使用`mysqli_connection->insert_id` 而不是`mysqli_stmt->insert_id`如果你多次执行同一个准备好的语句。以为您可能知道这是否正确。 (3认同)

Mar*_*rco 6

$newid = mysqli_insert_id($mysqli_db);
Run Code Online (Sandbox Code Playgroud)

$mysqli_db是你的mysqli数据库连接.据我所知,插入行(准备好的声明或直接INSERT INTO)的方式无关紧要.mysqli_insert_id()应该使用此db连接返回最后一个插入行的id.

另一种方法是进行另一个查询SELECT LAST_INSERT_ID();.


JrB*_*nes 5

这是不正确的,您需要使用:

$stmt = $db->prepare("SQL Query");
$stmt->execute();
$id = $db->lastInsertId();
Run Code Online (Sandbox Code Playgroud)

  • 仅当您使用“PDO”而不是“MySQLi”时。 (5认同)