【问题标题】:SQL get the ID from the row that was just insertedSQL从刚刚插入的行中获取ID
【发布时间】:2014-08-23 17:54:35
【问题描述】:

如何获取我刚刚插入的行的 ID?我正在使用 PDO 语句,我可以在其中将姓名和电子邮件插入到表格中。

$dbh = new PDO();
$dbh->prepare ("INSERT INTO `table` (`name`, `email`) VALUES (:name, :email);");
// execute
$dbh->execute(array(':name' => 'John Doe', ':email' => 'johndoe@gmail.com'));

该表还有一个自动递增的 id 列。

如何获取刚刚创建的行的 ID?我读过lastInsertId(),但是如果两个客户端同时插入一行,那有时会不会给出错误的值?

【问题讨论】:

  • 没有。如果 lastInsertId() 像那样“困惑”,那将完全没用。它总是会返回您上次插入的 ID。
  • 错字?在查询中将 :value 更改为 :email。

标签: php mysql sql


【解决方案1】:

除了@Issam Zoli this 可能是您需要的。不过似乎有一些警告。

查看NaturalBornCamper's Answer。

这是一个如何从上面的链接中使用它的示例。

$db = new PDO('mysql:dbname=database;host=localhost', 'user', 'pass');
$statement = $this->db->prepare('INSERT INTO people(name, city) VALUES(:name, :city)');
$statement->execute( array(':name' => 'Bob', ':city' => 'Montreal') );

echo $db->lastInsertId();

【讨论】:

    【解决方案2】:

    lastInsertId() 返回此 DB 连接的最后插入 id。在其他页面中将是另一个连接和另一个最后插入的 id。

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 1970-01-01
      • 2014-04-19
      • 2011-07-31
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多