質問: $pdo->query('SET NAMES utf8'); ``` は何のために$stmtを文頭に置いているのか分からず、更に ``` $db->query($sql); //$sqlはこれよりも前に指定済み ``` に至っては、先ほどのqueryで文頭に使われていた$stmtが消えています。 なので何が何だか分からずひどく混乱しています。 どなたかわかりやすい解説をお願いいたします........。
回答: PDOを使った文脈であれば`$stmt`はほとんどの場合PDOStatementオブジェクトを表しています。 PDOStatementクラスの説明はマニュアルによれば次のようになっています。 > > プリペアドステートメントを表します。ステートメント実行後は関連する結果セットを表します。 > > > PDO::queryはSQLを実行し、実行後に実行結果の情報が格納されたPDOStatementオブジェクトを返します。 つまり**`$stmt =`とすべきは、実行後にSQLの実行結果に関する情報を得たい場合**であり、ただSQLを実行するだけであれば`$db->query($sql);`のように書けばよいということになります。