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 件のコメント:
コメントを投稿