Php Can';在mysqli_查询中不使用AND运算符?
我需要使用多个参数筛选查询,但我不能使用mysqli\u查询而不是mysql\u查询 如果我不使用AND运算符,我的代码就可以正常工作,例如:Php Can';在mysqli_查询中不使用AND运算符?,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我需要使用多个参数筛选查询,但我不能使用mysqli\u查询而不是mysql\u查询 如果我不使用AND运算符,我的代码就可以正常工作,例如: $results = mysqli_query($connecDB,"SELECT * FROM table WHERE company='Company1' ORDER BY id DESC"); 但如果我使用AND运算符: $results = mysqli_query($connecDB,"SELECT * FROM table WHERE c
$results = mysqli_query($connecDB,"SELECT * FROM table WHERE company='Company1' ORDER BY id DESC");
但如果我使用AND运算符:
$results = mysqli_query($connecDB,"SELECT * FROM table WHERE company='Company1' AND company='Company2' ORDER BY id DESC");
代码不再工作了。我四处搜索,看起来我需要准备好的语句,但我找不到让代码正常工作的方法
有人知道我做错了什么吗?试试:
SELECT * FROM table WHERE company IN ( 'Company1', 'Company2' ) ORDER BY id DESC
您不能同时拥有Company1
和Company2
的公司,请尝试:
SELECT * FROM table WHERE company IN ( 'Company1', 'Company2' ) ORDER BY id DESC
您不能让同时是Company1
和Company2
的公司使用或代替和:
SELECT * FROM table WHERE (company='Company1' OR company='Company2') ORDER BY id DESC
使用或代替和:
SELECT * FROM table WHERE (company='Company1' OR company='Company2') ORDER BY id DESC
首先,绝对没有两个谓词都计算为true的行 MySQL正在查看每一行,并检查该行是否满足谓词,在本例中,检查整个WHERE子句的结果是否返回TRUE 如果在
company
列中有一行的值为'Company1'
,则第一个谓词:
company = 'Company1'
company = 'Company2'
将评估为真实;第二个谓词:
company = 'Company1'
company = 'Company2'
is将评估为FALSE
根据布尔和
运算符的逻辑,TRUE和FALSE
的计算结果为FALSE
,因此该行不会返回
这应该足以解释查询返回0行的原因
如果希望当
company
列的值与'Company1'
或'Company2'
匹配时,查询返回一行,则这两个谓词可以与布尔或
运算符组合使用。首先,绝对没有两个谓词都计算为true的行
MySQL正在查看每一行,并检查该行是否满足谓词,在本例中,检查整个WHERE子句的结果是否返回TRUE
如果在company
列中有一行的值为'Company1'
,则第一个谓词:
company = 'Company1'
company = 'Company2'
将评估为真实;第二个谓词:
company = 'Company1'
company = 'Company2'
is将评估为FALSE
根据布尔和
运算符的逻辑,TRUE和FALSE
的计算结果为FALSE
,因此该行不会返回
这应该足以解释查询返回0行的原因
如果希望当
company
列的值与'Company1'
或'Company2'
匹配时,查询返回一行,则这两个谓词可以与布尔或
运算符组合使用。实际上,这是您的逻辑问题。您必须使用或而不是和,因为“公司”字段只能包含两个公司中的一个,而“公司”字段不能同时包含两个公司。因此,您必须将$query更改为以下内容:
SELECT * FROM table WHERE (company='Company1' OR company='Company2') ORDER BY id DESC
或
事实上,这是你的逻辑问题。您必须使用或而不是和,因为“公司”字段只能包含两个公司中的一个,而“公司”字段不能同时包含两个公司。因此,您必须将$query更改为以下内容:
SELECT * FROM table WHERE (company='Company1' OR company='Company2') ORDER BY id DESC
或
您应该使用ORcan,请提供其输出的错误,以便我们确定其不起作用的原因。与准备好的报表无关:公司不能同时是1号公司和2号公司。。。。了解和与上述ORA之间的区别。但是,如果要使用
和,您需要使用类似于WHERE company='Company1'和city='City1'
的东西。您应该使用ORcan,请提供它输出的错误,以便我们确定它不工作的原因。与准备好的语句无关:公司不能同时是Company1和Company2。。。。了解和与上述ORA之间的区别。但是,如果您想使用和
,则需要使用类似于的东西,其中company='Company1'和city='City1'
,而解决方案是正确的,我觉得接下来应该简单介绍一下它的工作原理,尽管它非常简单。虽然解决方案是正确的,但我觉得接下来应该简要介绍一下它的工作原理,即使它非常简单。此外,在这种基本情况下,in的性能将优于OR。看@Sarthaz,我不知道,它似乎比OR更简单,更符合逻辑clause@Danijel,谢谢你的回复,它按我的需要工作。我错误地认为OR会排除其他结果。而且,在这个基本情况下,in将比OR表现更好。看@Sarthaz,我不知道,它似乎比OR更简单,更符合逻辑clause@Danijel,谢谢你的回复,它按我的需要工作。我错误地认为OR会排除其他结果。