我想知道如何使用数组查询数据库,如下所示:
$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");
任何帮助将不胜感激,谢谢!
你想要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 注入。
使用 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)");
$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);