Php Can';在mysqli_查询中不使用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

我需要使用多个参数筛选查询,但我不能使用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 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会排除其他结果。