ラベル PDO の投稿を表示しています。 すべての投稿を表示
ラベル PDO の投稿を表示しています。 すべての投稿を表示

2014年11月15日土曜日

PDO: テーブルから 1 つのカラムを配列で取得

fetchAll() に PDO::FETCH_COLUMN を渡すと、
1つのカラムを配列にして返してくれる。

function get_names() {
    $pdo = new PDO($dsn, $config['dbuser'], $config['dbpass']);
    $sth = $pdo->preapre('SELECT `name` FROM `my_table`');
    if(!$sth->execute()) {
        return false;
    }
    return $sth->fetchAll(PDO::FETCH_COLUMN);
}

get_names(); // ['tanaka', 'satou', 'suzuki', ...]

2014年7月14日月曜日

PHP の PDO で条件部分に変数を使う際の注意

例えば LIMIT や ORDER BY の 後ろに変数を使おうとして、
こんな感じに書くと false が返ってくる。
$num = 5;
$sth = $dbh->prepare('SELECT * FROM `my_table` LIMIT :num');
$sth->bindValue(':num', $num);
$sth->execute();  // false

$num の値が : num の中に文字列として展開されていることが原因。
データ型を指定するとうまくいく。
$sth = $dbh->prepare('SELECT * FROM `my_table` LIMIT :num');
$sth->bindValue(':num', $num, PDO::PARAM_INT);
$sth->execute();  // データを取得できる


PDO 定義済み定数 | PHP
http://jp2.php.net/manual/ja/pdo.constants.php

参考
PHPのPDOでLIMIT句でエラーが発生した時の対処 | SUSH-i LOG
http://blog.sus-happy.net/201207/php-pdo-limit/

2014年7月5日土曜日

PDO のエラーコード 00000 の意味は?

PHP の PDO を使って SQL を実行したあと、
errorInfo() を見てみるとエラーコードに 00000 がセットされている場合があった。

array (size=3)
  0 => string '00000' (length=5)
  1 => null
  2 => null

エラーコード 00000 は SQL の実行が成功した時にセットされている。