【发布时间】: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