使用php和mysql进行搜索查询时出现的问题

使用php和mysql进行搜索查询时出现的问题,php,mysql,Php,Mysql,我只想得到一个直接的答案和解释,为什么我之前的查询有效,而后面的查询无效 以下是运行正常的查询: $sql = "SELECT * FROM productslist WHERE brand LIKE ?"; 这根本不起作用,只会返回一个错误: $sql = 'SELECT * FROM productslist WHERE brand LIKE "%'.$search_string.'%"'; 有人能解释一下为什么后一个问题没有解决吗;根本不工作 提前感谢。我在自己的数据库中用一个表测试了

我只想得到一个直接的答案和解释,为什么我之前的查询有效,而后面的查询无效

以下是运行正常的查询:

$sql = "SELECT * FROM productslist WHERE brand LIKE ?";
这根本不起作用,只会返回一个错误:

$sql = 'SELECT * FROM productslist WHERE brand LIKE "%'.$search_string.'%"';
有人能解释一下为什么后一个问题没有解决吗;根本不工作


提前感谢。

我在自己的数据库中用一个表测试了查询。工作很好。。。我用了一个常数

请尝试mysqli\u real\u escape\u字符串:

$search_string = mysqli_real_escape_string($conn, $search_string);
    $sql = 'SELECT * FROM productslist WHERE brand LIKE "%'. $search_string  .'%"';
用PDO试试这个(编辑:包括PDO连接字符串,因为他没有指定是否使用PDO)——


$search\u string
的值是多少?您是否使用准备好的语句?有错误吗?分配给搜索字符串变量的值是什么?您是否知道sql注入尝试更改您使用的配额,如下所示:$sql=“SELECT*FROM productslist WHERE brand like“%”$search\u string。"%' "; 有时配额会导致错误。或者,您可以随时回显查询、复制查询并直接在db中执行,然后查看是否存在任何db错误。我猜
$search\u string
包含引号符号。最好使用用户准备的语句,而不是
escape
$dbh = new PDO("mysql:hostname=$your_server;dbname=$database_name, $username, $password);

$sql = "SELECT * FROM productslist WHERE brand LIKE :search";
$query = $dbh->prepare($sql);
$query->bindValue(":search", "%$search_string%");
$query->execute();

$result = $query->fetchAll(PDO::FETCH_ASSOC);