【问题标题】:Read the last inserted row读取最后插入的行
【发布时间】:2013-04-05 09:17:32
【问题描述】:

我有以下插入语句

global $dbUser;
global $dbPW;
$query = "INSERT INTO comments (post_id, text) VALUES (:post_id,:text)";
$db = new PDO('mysql:host=localhost;dbname=test', $dbUser, $dbPW);
$statement = $db -> prepare($query);
$statement -> execute(array(':post_id' => $postId, ':text' => $text));

我想在同一事务中读取并返回插入的行

我知道我可以得到

$db->lastInsertId('id')

但是我知道如何在 PDO 中进行交易,但我无法找到如何使用上述准备好的语句(这是出于安全目的 IIRC 的首选方法)。

谢谢!

【问题讨论】:

  • 顺便说一句,你不应该在函数中连接。每个应用程序连接一次,然后在整个代码中使用一次连接。
  • @YourCommonSense 好的,谢谢,这意味着“$db = new PDO('mysql:host=localhost;dbname=test', $dbUser, $dbPW);”将被初始化一次(比如在我的全局包含文件中)并重新用作全局变量?
  • 是的,完全正确。只需在函数中设置为global $db;。否则,您将通过单个脚本执行的多个连接向数据库服务器发送垃圾邮件。

标签: php mysql transactions pdo


【解决方案1】:

您不需要在这里进行任何交易。
如果您需要自动生成的 ID,只需运行 $db->lastInsertId() - 仅此而已。

【讨论】:

  • 在这种情况下是真的,在其他情况下,我在选择语句中有公式,我不想在代码的其他部分再次出现。感谢您的宝贵意见!
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2017-10-14
  • 2016-11-25
  • 2012-01-21
相关资源
最近更新 更多