Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SELECT查询是否可以有多个WHERE IN函数?_Php_Mysql - Fatal编程技术网

Php SELECT查询是否可以有多个WHERE IN函数?

Php SELECT查询是否可以有多个WHERE IN函数?,php,mysql,Php,Mysql,也许这是一个非常不切实际的问题,但问题来了 我有两个数组。一个包含单词和其他数字。在我将它们内爆后,它们打印出来如下: $offers:word1、word2、word3 及 $city:1,2,3,4 我尝试从表“offers”中进行查询,其中$offers与列“offer”匹配,$city与“city\u id”匹配 我的问题是: $query = "SELECT * FROM offers WHERE offer IN ($offers) AND city_id IN ($city)

也许这是一个非常不切实际的问题,但问题来了

我有两个数组。一个包含单词和其他数字。在我将它们内爆后,它们打印出来如下:

$offers:word1、word2、word3

$city:1,2,3,4

我尝试从表“offers”中进行查询,其中$offers与列“offer”匹配,$city与“city\u id”匹配

我的问题是:

   $query = "SELECT * FROM offers WHERE offer IN ($offers) AND city_id IN ($city)";

    $result = mysql_query($query);                  

    while($row = mysql_fetch_array($result))

            {


            $rows[] = $row['id'];


            }
这只给出了一个错误:警告:mysql\u fetch\u数组期望参数1是资源。。。甚至它也会给我带来数据库表中的行

谢谢

嗯。找到了解决办法。因为我的第一个数组包含单词,所以我在每个单词周围加上引号:

function add_quotes($str) {
    return sprintf("'%s'", $str);
}

$offers =  implode(',', array_map('add_quotes', $offer_array)); 

可能的副本无法标记为这样。如果$offers和$city是数组,那么您可能需要首先选择是的,我首先将它们内爆如下:$city=in爆,$city\u数组;好的,那么sql错误是什么?另一个问题可能是您需要包装$offers,因为。。在foo中,bar无效,应为。。在'foo','bar'中,您的$offer变量看起来像$offers:word1、word2、word3,这在IN子句中不会被接受,因为它需要'word1','word2','word3'。因此,最终查询失败,返回false。这里有一段有用的代码:echo$query;