Php PDO:lastInsertId()是一个单独的查询吗?

Php PDO:lastInsertId()是一个单独的查询吗?,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,如果我有此代码: <?php $q = $sql->prepare("INSERT INTO `table` (row) VALUES ('1')"); $q->execute(); $lastid = $sql->lastInsertId(); // is this a 2nd query? ?> 它的工作原理类似于查询,因为它将从数据库中选择最后插入的id 如前所述 返回最后插入行的ID或序列对象的最后一个值,具体取决于基础驱动程序

如果我有此代码:

<?php
    $q = $sql->prepare("INSERT INTO `table` (row) VALUES ('1')");
    $q->execute();

    $lastid = $sql->lastInsertId(); // is this a 2nd query?
?>

它的工作原理类似于查询,因为它将从数据库中选择最后插入的id

如前所述

返回最后插入行的ID或序列对象的最后一个值,具体取决于基础驱动程序


不,实际上它不运行SQL查询

下面是ext/pdo_msyql/mysql_driver.c中的一行:

char *id = php_pdo_int64_to_str(mysql_insert_id(H->server) TSRMLS_CC);

这是对MySQL API的调用。这会将最后一个插入id作为属性在内部访问,而不是通过运行SQL进行访问。

您正在搜索吗?它可以在一个原子调用中执行两个单独的SQL调用。为什么要在一个查询中执行此操作?^因为我想在不查询数据库的情况下获取刚刚插入的行的IDtwice@supercoolville你为什么认为我想。。。没有查询…
?lol…,因此在成功插入行时不会自动返回任何数据?Oops。。。谢谢你详细的回答
char *id = php_pdo_int64_to_str(mysql_insert_id(H->server) TSRMLS_CC);