如何用数组查询数据库? WHERE ='array()'

时间:2011-05-11 23:41:05

标签: php mysql sql arrays

我想知道如何使用数组查询数据库,如下所示:

$query = mysql_query("SELECT * FROM status_updates WHERE member_id = '$friends['member_id']'");

$friends是一个包含成员ID的数组。我正在尝试查询数据库并显示member_id等于$friends数组中成员ID之一的所有结果。

有没有办法做WHERE = $friends[member_id]之类的事情,或者我必须将数组转换为字符串并构建查询,如下所示:

$query = "";
foreach($friends as $friend){
  $query .= 'OR member_id = '.$friend[id.' ';
}
$query = mysql_query("SELECT * FROM status_updates WHERE member_id = '1' $query");

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:5)

你想要IN

SELECT * FROM status_updates WHERE member_id IN ('1', '2', '3');

所以代码改为:

$query = mysql_query("SELECT * FROM status_updates WHERE member_id IN ('" . implode("','", $friends) . "')");

根据friends数组中的数据来自哪里,很多人希望通过mysql_real_escape_string()传递每个值,以确保没有SQL注入。

答案 1 :(得分:0)

使用SQL IN运算符,如下所示:

// Prepare comma separated list of ids (you could use implode for a simpler array)
$instr = '';
foreach($friends as $friend){
    $instr .= $friend['member_id'].',';
}
$instr = rtrim($instr, ','); // remove trailing comma
// Use the comma separated list in the query using the IN () operator
$query = mysql_query("SELECT * FROM status_updates WHERE member_id IN ($instr)");

答案 2 :(得分:-1)

$query = "SELECT * FROM status_updates WHERE ";
for($i = 0 ; $i < sizeof($friends); $i++){
$query .= "member_id = '".$friends[$i]."' OR ";
}
substr($query, -3);
$result = mysql_query($query);