我想知道如何使用数组查询数据库,如下所示:
$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");
非常感谢任何帮助,谢谢!
答案 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);