在IF语句中使用IN参数?

时间:2017-06-27 21:17:10

标签: php mysql

我已经尝试在Select语句中使用IN参数,如

$sql = "SELECT * FROM msgs WHERE user1 IN ('$var1','$var2') AND user2 IN ('$var1','$var2')";

这是否适用于IF语句以及

if(user1 IN ('$var1','$var2') AND user2 IN ('$var1','$var2')){

如果没有,是否有另一种方法可以在IF声明中实现类似的功能?

更新

msg表有点像这样:

accid  |  user1  |  user2  |  message  |
1         mark      edward    asasdsadsad
2         edward    mark      asdaqwdksjadhkq
3         mark      sherlock   sadasdadsad 

我想制作一个IF STATEMENT来确定user1是否为mark / edward AND user2是mark / edward - 这样我就可以确认两者已经来回发送了消息。通常我可以使用IN通过SELECT,但在这种情况下,出于某些原因我必须使用IF语句。反正有吗?

1 个答案:

答案 0 :(得分:1)

IN运算符是标准的SQL运算符;这在SQL语句中有效。

但那不是PHP运营商。不,PHP if语句不正确。 这里记录了PHP比较运算符:

http://php.net/manual/en/language.operators.comparison.php

根本不清楚user1是什么引用。如果它是变量名称,则应在其前面加上美元符号。

PHP中的SQL表达式的等价物如下所示:

if( ( $user1 == $var1 or $user1 == $var2) and ( $user2 == $var1 OR $user2 == $var2 ) ) {

注意:在MySQL中,默认情况下,字符串比较不区分大小写。 (这实际上取决于表达式的排序。)如果我们要比较字符串,要在PHP中进行不区分大小写的比较,我们可以使用strcasecmp函数代替==比较运算符。记录在这里:

http://php.net/manual/en/function.strcasecmp.php

正如评论中建议的 u_mulder 一样,如果我们对字符串进行区分大小写比较没问题,并且我们将$var1$var2放入数组中,我们可以使用in_array函数,在此处记录:

http://php.net/manual/en/function.in-array.php