0

これに明確に答えるものを見つけることができず、しばらく疑問に思っていました。初心者の質問でしたら申し訳ありません。

次のシナリオでは、PDO 変数をインクリメントまたは変更する必要がありますか? 次のような 2 つのクエリがある場合:

$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 を使用した場合と 2 番目の $stmt を使用した場合は、悪い習慣と見なされます。または、$msg_id を取得したら、$stmt を再利用できますか? PDO は初めてなので、変数を繰り返すと便利ですが、後で修正する必要があるバグを導入したくありません。

4

2 に答える 2

2

技術的に言えば、最初のクエリで $stmt を使用した作業が完了したら、その PHP 変数を別のステートメント/クエリで再利用できます。それを妨げるものは何もありません。


それでも、私は明示的な名前$stmtを持つ 2 つの変数を持つという考えが好きです。これは、とよりも有益なものを意味し$stmt1ます。

たとえば、 と という名前の 2 つの PHP 変数がある場合$stmtSaveMessage$stmtSaveUserこれらの変数のいずれかが使用されるたびに、コードが何をするかがすぐにわかります$stmt。他の何かを保存するステートメントを指すようにオーバーライドされています。


それ自体で、$stmt通常、データベース関連の何かを行うステートメントで作業していることを示します。しかし、より重要な変数名を使用すると、すぐにコードが読みやすくなり、理解しやすくなり、維持しやすくなります。また、プログラミングするときは、新しいコードを書くよりも古いコードを維持することに多くの時間を費やす傾向があります...

于 2012-05-18T16:45:36.053 に答える
1

同じ変数を再利用するのは良い考えだと思います。混乱が少なく、メモリを少し節約できます。

本当に、それは完全にあなた次第ですが、個人的には、古いものにしがみつく特定の理由がない限り、すべてのクエリに対して新しいリソース ハンドルを作成するのは悪い習慣だと思います。

于 2012-05-18T16:31:47.610 に答える