PDOで「出来ると思ってやってみたら実は出来なかった」ことがあったので覚え書き。
やろうとしたのはカラム名への変数のバインド。以下サンプル。
1 2 3 4 |
$sort = 'name'; $sth = $dbh->prepare('SELECT * FROM members ORDER BY :sort'); $sth->bindParam(':sort', $sort, PDO:PARAM_STR); $sth->execute(); |
実際に試してみたら期待した結果が返らず。以下のように書き直したら期待通りになった。
1 2 3 |
$sort = 'name'; $sth = $dbh->prepare('SELECT * FROM members ORDER BY ' . $sort'); $sth->execute(); |
ネットを検索したら以下の記事がヒットした。
参考サイト
y.okano blog: PHP: PDO ではカラム名に変数をバインドできない
http://yokano-jp.blogspot.com/2014/11/php-pdo.html