使用PDO语句获取受影响的行数和最后插入的ID

8

我应该如何显示此代码中受影响的行数:

$sql = $conn->prepare ("UPDATE countries SET country=:country");
$sql->bindValue(":country", "blablaa");
$sql->execute();

如何使用以下代码显示最后插入的ID:

$sql = $conn->prepare ("INSERT INTO countries (country) VALUES (:country)");
$sql->bindValue(":country", "test");
$sql->execute();
echo $sql->lastInsertId(); // id of last inserted

我尝试了,但是收到一个错误的调用未定义方法PDO::lastInsertId()

2个回答

12

7
$sql->lastInsertId();

需要替换为

$dbh->lastInsertId();

其中 $dbh 是您的 PDO 对象。

有关更多信息,请参见 此处

exec 返回受影响的行数,execute 仅返回 true 或 false 值。


我无法使用 $dbh->lastInsertId(); 让它正常工作。在您提供的链接中,它说 $dbh->exec("INSERT INTO...") 但这是重复的工作,我的意思是我已经有了准备好的 $sql,为什么我还要再写一遍才能输出最后插入的内容呢?我可能漏掉了什么,您能否编写一个示例代码,告诉我如何输出 lastinsertid()? - Karem
2
在您的情况下,您正在使用$conn作为您的PDO对象,请尝试$conn->lastInsertId(); - Erik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接