ホームページ >バックエンド開発 >PHPチュートリアル >thinkphpのクエリ条件における一重引用符のエスケープの問題について教えてください。

thinkphpのクエリ条件における一重引用符のエスケープの問題について教えてください。

WBOY
WBOYオリジナル
2016-06-23 13:48:511803ブラウズ

$model=M('Book');
$map['lb_author']=array('like',"%mike's%");
$model->where($map)->field(' lb_id')->limit(10)->select();
Print SQL:
正しい結果は
SELECT `lb_id` FROM `lb_book` WHERE ( `lb_author` LIKE '%mike's%' ) LIMIT 10 となるはずです
ただし
SELECT `lb_id` FROM `lb_book` WHERE ( `lb_author` LIKE '%mike's%' ) LIMIT 10 // thinkphp は自動的にエスケープします ' したがって、データベースには何も見つかりません

エスケープを回避するにはどうすればよいですか? ?


ディスカッションへの返信(解決策)

定義時に特殊文字を追加する必要がある理由がわかりません。可能であれば、データに組み込むことができるように、記述するときにエスケープすることを検討できます。 SQL そうすれば、再エスケープの問題はなくなります。

一重引用符内の単一引用符はエスケープする必要があります
したがって、あなたが言及した状況は発生しません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。