衝撃! みんな知らないPDOの正しい使い方
PHPエンジニアなら今やDBヘの接続をPDOを
使っていることでしょう。
まぁ、たぶんフレームワークのクラスとか使ってる人は
あんまり意識してないだろうけど。。。
select文を使うときこんな風に使ってないですか?
$sql = 'select user_id, user_name from tbl_user where id > ? AND id < ?';
$stmt = $dbh->prepare($sql); $stmt->execute(array(11, 21)); while($result = $stmt->fetch(PDO::FETCH_ASSOC)){ ..... }
これね、PDO::FETCH_ASSOC は完全にムダ!
fetchAllも同じね
なんかどんなサイト見ても上記のようにして処理してるんだけど
$stmt(PDOStatement)はなんとまるで配列のように直接foreachでブン回せるんです
これを知ってる人、あんまりいない気がする
foreach($stmt as $val)){ ..... }
プログラムがスッキリするし、何より、こっちの方が早いはず。。
ちなみにPDOのデフォルトでSELECTすると1つのレコードの値を連想配列とただの配列でまざって取得しちゃうので、下記もやっておくこと。
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);