エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

衝撃! みんな知らないPDOの正しい使い方

[フレームワークなしの生でPHP使う人向け]

 

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);