2010年2月8日月曜日

sprintfでSQL文を書くときに%をうまく扱う方法(解決)

PHPでsprintfを使ってsql文を書くとき、%sなどを使うと便利ですが、
sql文でもwhere likeを使うと、where foo like 'baa%'みたいに%を使うので、
$sql=sprintf("select * from something where foo like '%s%'",$str);
みたいにするとエラーが出て困りました。

MySQLマニュアルを見てもよくわからず、PHPマニュアルを見るとちゃんと対処法が書いてありました^^
http://jp.php.net/manual/ja/function.sprintf.php の例5に書いてあります。

%%と%を二つ重ねるとリテラルとしてエスケープできるとのこと。

'%%s%'みたいにしてみたら、無事行けました。
よかった!

0 件のコメント:

コメントを投稿