Daily Archives: 2008 年 9 月 5 日

PHP & PearのDB.php でプレースホルダを使う。

0
Filed under php
Tagged as

書籍をちゃんと読めばよかったんだけど、
ちょっと前にはまったことをメモしておく。

phpでDBを扱うときにプレースホルダを使うわけですが、
プレースホルダを利用した時点で、エスケープ処理がされるわけなんです。

が、それを勘違いしまして、
mysql_real_escape_stringしたわけですよ。

そしたら、やっぱり↓みたいのがでましたね。

Warning: mysql_real_escape_string(): Access denied for user: ‘aaaa@localhost’ (Using password: NO) in aaa.php on line 384
Warning: mysql_real_escape_string(): A link to the server could not be established in aaa.php on line 384

まあ、エラーの内容はちょっと変ることもあるだろうけど、
僕がしくじった時はこんなんがでてました。
ようするに、2重でエスケープ処理してまったって話ですね。

ちなみにプレースホルダってのは、↓みたいなのですね。

$options = array(“test”, “hogemoge.com”, “bbb@hogemoge.com”);
$sql = “select colm from tablename where name = ? AND domain = ? AND email = ? “;
$aaa = $db->query($sql, $options);

$sqlに代入してるSQL文に『?』が3つあるわけですが、
$options配列に入っている内容も3つあります。
各々エスケープ処理されて、『?』のところに充当されるわけですね。

というわけで、phpではプレースホルダすれば、エスケープ処理いらないよというお話でした。