PHP +转换数组用于IN语句

时间:2013-04-15 16:35:00

标签: php sql arrays in-clause

让我们说我想给喜欢大号糖果的人发一封电子邮件。

当我这样做时:

$query1 = mysql_query("SELECT id_candy FROM `candylist` WHERE
candysize > 100") or die(mysql_error());

$result = mysql_fetch_array( $query1 );

$query2 = mysql_query("SELECT mail FROM `buyers` WHERE
candysizeinterest IN ($result)
") or die(mysql_error());

这个查询2当然是个问题。

$ result的格式不正确,然后我得到了明显的错误:

**Unknown column 'Array' in 'where clause'**

我需要帮助以一种看起来像这样的方式格式化查询结果:

($val1, $val2, $val3....and so on) 

然后我将能够将它用于IN语句。

但我只是不知道该怎么做。

4 个答案:

答案 0 :(得分:2)

尝试

$array = array();
while($result = mysql_fetch_array( $query1 ))
{
   $array[] = $result['id_candy'];
}

然后使用implode

$in_condition  = implode(',', $array);

最后

$query2 = mysql_query("SELECT mail FROM `buyers` WHERE candysizeinterest IN ($in_condition)

注意:请切换到PDO或mysqli _ *

答案 1 :(得分:1)

你在$query2放置数组而不是实际值

的sintax中有错误

更改

$query2 = mysql_query("SELECT mail FROM `buyers` WHERE candysizeinterest IN ($result)

$query2 = mysql_query("SELECT `mail` FROM `buyers` WHERE `candysizeinterest` IN ('".$result['id_candy']."')");


我还想记住,mysql_函数已被弃用,因此我建议您切换到mysqliPDO以获取新项目。

答案 2 :(得分:0)

您可以使用implode()将数组转换为以逗号分隔的字符串:

implode(',',$result);

您可以将其与IN

一起使用

答案 3 :(得分:0)

要将数组转换为以逗号分隔的字符串,请使用

implode (",",$array)