Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:过滤结果的查询_Php_Mysql - Fatal编程技术网

Php MySQL:过滤结果的查询

Php MySQL:过滤结果的查询,php,mysql,Php,Mysql,我希望我能做一个过滤结果的查询。当我单独提出此请求时,它会起作用: SELECT * FROM products_details WHERE active = '1' AND category LIKE '% Phobies%'; 但在我的代码中,测试时,每次都会出现以下错误: 致命错误:未捕获PDOException:SQLSTATE[42S22]:列未捕获 在C:\laragon\www中的“where子句”中找到:1054未知列“” \第36行的tresorsdufutur\ajax.p

我希望我能做一个过滤结果的查询。当我单独提出此请求时,它会起作用:

SELECT * FROM products_details WHERE active = '1' AND category LIKE '% Phobies%';
但在我的代码中,测试时,每次都会出现以下错误:

致命错误:未捕获PDOException:SQLSTATE[42S22]:列未捕获 在C:\laragon\www中的“where子句”中找到:1054未知列“” \第36行的tresorsdufutur\ajax.php

但我的查询中没有IN,所有术语都来自同一列。我真的找不到我的错误。这是我的密码

$ query = "SELECT * FROM products_details WHERE active = '1'";

if (isset ($ category) &&! empty ($ category)) {
$ categorydata = implode ("','", $ category);
$ query. = "AND product_category LIKE (`$categorydata`) ";
}

似乎有一些事情可能会导致问题

  • 您似乎在连接的查询的两个部分之间缺少一个空格
  • 您在查询的后半部分使用了`作为引号
  • 我已经有一段时间没有使用PHP了,但我认为您需要连接
    $categorydata
  • 试试这个

       $query = "SELECT * FROM products_details WHERE active = '1'";
    
       if (isset($category) && !empty($category)) {
         $categorydata = implode ("','", $category);
         $query. = " AND product_category IN ('". $categorydata. "') ";
       }
    

    奇怪的是,在
    $
    和变量名之间使用空格字符。然而,
    $category
    变量的值是什么?为什么在
    $categorydata
    周围有反勾号?原始查询
    category LIKE…
    php查询
    product\u category LIKE
    这是两个不同的列名:-)请编辑您的问题以包含
    echo$query的输出因此,我们看到了您用代码生成的查询。对于$和categorydata之间的空格,我复制查询是错误的。它应该是这样写的$categorydata:)我更正了我的代码,不幸的是它不起作用。我总是犯同样的错误。好吧,不管怎样,我不知道你在做什么,但看起来它可能会对SQL注入开放。考虑使用预先准备好的语句或ORM。