Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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,我的数据库中有一个表: 表格产品: id | name | type | stock | code | etc | 1 | pan | ready | 0 | A23 | ome | 2 | ipad | pre | 0 | B55 | tow | 3 | mouse| stock | 5 | C33 | ter | mysql查询: $key = $_GET["key"]; $searchTermBits[] = " name LIKE

我的数据库中有一个表:

表格产品

id | name | type  | stock | code  | etc |
1  | pan  | ready | 0     | A23   | ome |
2  | ipad | pre   | 0     | B55   | tow |
3  | mouse| stock | 5     | C33   | ter |

mysql查询:

$key = $_GET["key"];

$searchTermBits[] = " name LIKE '%".$key."%' or code LIKE '%".$key."%'  or etc LIKE '%".$key."%' and type != 'pre' and stock! ='0'  ";

输出:当搜索关键字“tow”时

为什么结果仍然显示第2条记录

  • ipad、pre、库存:0、代码:B55等:拖
  • 甚至我的查询类型!='“预”和“库存”0'

    这是否与查询冲突,如选择类型!='还是什么

    但是,如果我像这样更改查询

    $searchTermBits[] = "  code LIKE '%".$key."%'  and type != 'pre' and stock! ='0'  ";
    

    结果是正确的。

    和运算符具有更高的优先级,这意味着您的查询与

    (name like '%a%') or (name like '%b%') 
        or (name like '%c%' and type != 'pre' AND stock != 0)
    
    因此,附加条件仅适用于第三种
    情况。要使查询的行为符合您的要求,请使用括号:

    " (name LIKE '%".$key."%' or code LIKE '%".$key."%'  or etc LIKE '%".$key."%')
        and type != 'pre' and stock! ='0'  "
    

    BTW,如果<代码> $KEK/COD>来自不可信的源(例如来自用户的任何类型的输入),考虑使用占位符代替准备语句。

    考虑到您提供的稀少信息,我认为Cthulhu有正确的答案。另外,如果我们考虑你提供的代码,我会给你建议。 因为AND运算符具有更高的优先级,所以查询的最后一次比较为“FALSE或TRUE”,结果为TRUE。如果要更改优先级,可以使用如下括号

    " (name LIKE '%".$key."%' or code LIKE '%".$key."%'  or etc LIKE '%".$key."%') and type != 'pre' and stock !='0'  ";
    

    对于关键字“tow”,此查询返回false

    您试图通过查询得到什么?我试图理解这个问题,以帮助您构建查询。我试图从表中获取所有字段,在本例中,$key是“tow”$key=$\u get[“key”];这样的话:“从tableName中选择*,其中的名称类似“%”。key。“%”和类型!='pre'和stock!='0'”?如果你能解释一下什么方法具有更高的优先级,那就太好了。巴哈哈,这就是问题所在,()天哪,我没意识到,谢谢兄弟