我一直找不到任何明确回答这个问题的东西,并且已经想知道了一段时间。对不起,如果这是一个新手问题。
在以下情况下,我是否必须增加或更改我的 PDO 变量。如果我有两个这样的查询:
$stmt = $dbh->prepare('
INSERT INTO messages
(content)
VALUES
(:content)
');
$stmt->bindValue('content', $content);
$stmt->execute();
$msg_id = $dbh->lastInsertId();
.....
$stmt1 = $dbh->prepare('
INSERT INTO something else
(stuff)
VALUES
(:stuff)
');
$stmt1->bindValue('stuff', $stuff);
$stmt1->execute();
$var_id = $dbh->lastInsertId();
如果我在两个上都使用了$stmt,而在第二个上使用$stmt,这被认为是不好的做法,或者一旦我有了 $msg_id,我可以重用$stmt吗?作为PDO的新手,重复变量会很方便,但我不想引入以后需要修复的错误。
从技术上讲,一旦你完成了第一个查询的$stmt,你就可以在另一个语句/查询中重用该 PHP 变量:没有什么能阻止你这样做。
尽管如此,我喜欢有两个具有明确名称的变量的想法 - 这意味着比$stmt
和$stmt1
更具信息性的东西。
例如,如果你有两个名为 $stmtSaveMessage
和 $stmtSaveUser
的 PHP 变量,每次使用这些变量之一时,你都会立即知道代码的作用:你不必考虑$stmt
现在是否指向保存消息的语句,或者它是否被覆盖指向保存其他内容的语句。
就其本身而言,$stmt
通常表示您正在使用一个语句,该语句执行与数据库相关的操作;但是使用更重要的变量名将立即使您的代码更易于阅读,更易于理解和维护 - 而且,在编程时,我们倾向于花费更多的时间来维护旧代码而不是编写新代码......
我认为重用同一个变量是个好主意。它不那么混乱,并节省了一点内存。
真的,这完全取决于你,但我个人认为为每个查询创建一个新的资源句柄是一种不好的做法,除非有特定的原因挂在旧的资源句柄上。