0

Cantは何が問題なのかを理解しているようで、クエリは正しいはずです。phpMyAdminで機能しますが、php文字列 "%"にワイルドカードを導入すると、すべてのクエリが失敗します。

これは機能します:

$query = sprintf("SELECT `id`FROM `table`WHERE `name` LIKE '".$resources[1]."'", 
                                                                   mysql_real_escape_string($resources[1]));

これはしません:

$query = sprintf("SELECT `id`FROM `table`WHERE `name` LIKE '%".$resources[1]."%'", 
                                                                   mysql_real_escape_string($resources[1]));

明らかに生成しようとしているクエリImは

SELECT `id` FROM `table`WHERE `name` LIKE '%someName%'
4

1 に答える 1

2

sprintfのマニュアルページを読む:http://php.net/sprintf

$sql = sprintf('..... '%%%s%%', $var);
                       ^^--- turns into %
                         ^--  %s -> $var
                           ^^-- turns into %

sprintf()を適切に使用していないため、記述されているコードはSQLインジェクションを妨げるものではありません。

于 2013-02-14T18:36:43.370 に答える