ホームページ >バックエンド開発 >PHPチュートリアル >thinkphpのクエリ条件における一重引用符のエスケープの問題について教えてください。
$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 そうすれば、再エスケープの問題はなくなります。
一重引用符内の単一引用符はエスケープする必要があります
したがって、あなたが言及した状況は発生しません