PHP MYSQL 查询未获取多个 WHERE 条件

Posted

技术标签:

【中文标题】PHP MYSQL 查询未获取多个 WHERE 条件【英文标题】:PHP MYSQL Query not fetching multiple WHERE Conditions 【发布时间】:2022-01-24 04:06:29 【问题描述】:

我有一个搜索功能,onkeydown 会给出建议。目前,该查询仅从表 customer_name 的一行中获取,并且我正在尝试将 id 行也用于搜索建议。

所以我的查询语法看起来像这样:

$query = "SELECT * FROM customers WHERE customer_name OR id like'%".$search."%' LIMIT 5";

但上面的查询只会从第二个表名中获取,即 id 而不是两者。

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

我可能是错的,但WHERE customer_name 将始终评估为true,因此包括所有记录。你需要指定 什么 customer_name 应该被比较。

正确查询:

SELECT * FROM customers 
    WHERE customer_name LIKE '%".$search."%'
    OR id LIKE '%".$search."%'
LIMIT 5;

作为重要的安全提示,您应该查看prepared statements,而不是将数据与您的查询混合。这样做会使您容易受到 SQL 注入攻击。

【讨论】:

以上是关于PHP MYSQL 查询未获取多个 WHERE 条件的主要内容,如果未能解决你的问题,请参考以下文章

PHP查询mysql的时候用了like和LIMIT分页,如何获得未分页但是like了的总数据量

mysql 查询 - 使用左连接和 where 子句的多个计数

php+mysql 如何优化千万级数据模糊查询加快

PHP:如果用户未按下提交按钮,Mysql 回滚多个查询(通过 ajax 完成)

PHP MySQL数据分页

7_mysql查询之where子句