PHP +转换数组用于IN语句


PHP + convert array for use with IN statement

假设我想给喜欢大块糖果的人发一封电子邮件。

当我这样做时:

$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());

这个query2当然是问题所在。

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

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

我需要帮助来格式化查询结果的方式,它看起来像:

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

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

但我就是不知道该怎么做

Try

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

然后使用内爆

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

最后

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

注意:请切换到PDO或mysqli_*

您在$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

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

implode(',',$result);

你可以用IN

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

implode (",",$array)