php - 为什么查询显示结果,但大部分参数值都是错误的?

标签 php mysql sql mysqli

我想非常谦虚地询问,我的两个查询显示了不同的结果。在这两个查询中,我传递了两个错误的值(城市 ID 并说明它),但查询仍然显示在执行时返回一行。以下是显示行的查询,我希望它不应该

select * from `companies` where `city_id` = 3 and `state_id` = 4 and 
`company_name` LIKE '%en%' 
or `company_email` LIKE '%en%'
or `company_profile` LIKE '%en%'
order by `company_name` asc

下面的查询没有显示任何行,由于传递了错误的值,所以这是预期的结果

select * from `companies` where `city_id` = 3 and `state_id` = 4 and 
`company_name` LIKE '%en%' 
or `company_email` LIKE '%en%'
order by `company_name` asc

两个查询的唯一区别是 like 子句

or `company_email` LIKE '%en%'

有人可以指导我为什么会发生这种情况吗?我愿意欣赏。如果我犯了任何错误,我深表歉意。

最佳答案

您混合使用 andor 的方式表明您并不完全了解它们的 precedenceAND 的优先级高于 OR,因此您的查询相当于这些:

where (
    `city_id` = 3
    and `state_id` = 4
    and `company_name` LIKE '%en%' 
)
or `company_email` LIKE '%en%'
or `company_profile` LIKE '%en%'
where (
    `city_id` = 3
    and `state_id` = 4
    and `company_name` LIKE '%en%' 
)
or `company_email` LIKE '%en%'

我认为您唯一的匹配是由于 company_profile

关于php - 为什么查询显示结果,但大部分参数值都是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51745596/

相关文章:

php - INT(10) 和 INT(12) 之间有什么区别(应用于我的代码时)?

java - 从远程应用程序使用本地主机 Web 服务

javascript - 获取MySQL存储的字符串格式数组并转换为JSON对象数组

php - PostgresQL从多维数组类型的Json字段中取数据

php - Symfony2 session 和缓存 :clear command

php - 帮助密码复杂性正则表达式

php - 自动递增一行(ID)

mysql - 如何将秒/分钟放在查询上?

sql - 我需要一些帮助来编写一个 sql 查询,我想找到所有讲授类(class)的讲师

php - 搜索MySQL数据库表,按SUM对结果排序