PHPでPDOを使用して簡単なクエリを実行しようとしています。コードは非常に単純です。
try {
$sql_query = "select * from Articles where title=':article'";
$dbh = get_PDO_connection();
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare($sql_query);
$stmt->execute( array( ':article' => "MD Example") );
var_dump($stmt);
$row = $stmt->fetch();
//if($row==null)return 'null';
var_dump($row);
} catch (PDOException $e) {
print $e->getMessage ();
}
var_dump($stmt)
常に印刷します:
object(PDOStatement)#3 (1) { ["queryString"]=> string(45) "select * from Articles where title=':article'" }
...何を入れてexecute()
も、例外はありません。そして、タイトルが示すように、fetch()
常にfalseを返します。SQLクエリを文字列に「ハードコーディング」すると、これらすべてが正常に機能することを知っておく必要があります。つまり、$sql_query
「select * from Articles where title ='MD Example'」に設定するとfetch()
、期待される結果が返されます。何が起きてる?