0

似乎无法弄清楚出了什么问题,查询应该是正确的,并且它在 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]));

我显然试图生成的查询是

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 %

您编写的代码并没有阻止 sql 注入,因为您没有正确使用 sprintf() 。

于 2013-02-14T18:36:43.370 回答