我在php中创建了一个包含一些USER_ID的数组。我正在使用具有名为USERS的表的mysql数据库。 现在我想只从USERS中选择那些user_id与数组中的USER_ID匹配的行。
提前致谢
答案 0 :(得分:9)
$ids = join(',',$user_ids);
$sql = "SELECT * FROM USERS WHERE user_id IN ($ids)";
Passing an array to a query using a WHERE clause
http://www.php.net/manual/en/function.join.php
http://www.php.net/manual/en/function.implode.php
答案 1 :(得分:7)
implode()
将数组放入SQL中的IN
子句:
$sql = "SELECT * FROM tbl WHERE USER_ID IN (" . implode(",", $user_ids) . ");";
这假设您的用户ID是整数,而不是必须引用和转义的字符串。在那种情况下,
$sqlids = array();
foreach ($user_ids as $id) {
// Escape and quote each id
$sqlids[] = "'" . mysql_real_escape_string($id) . "'";
}
$sql = "SELECT * FROM tbl WHERE USER_ID IN (" . implode(",", $sqlids) . ");";
答案 2 :(得分:2)
上面的IN
示例可能更清晰,但这是另一种方法。我已将格式化为人类可读性。请注意,如果用户名是用户提交的,或者可能不安全,请确保在构建mysql_real_escape_string()
数组时使用$users
。
<?php
$users = array('jim','mary','bob');
$userids = "USER_ID = '".implode("' \n OR USER_ID = '",$users)."'";
echo "
SELECT *
FROM USERS
WHERE $userids
";
?>
<强> OUTPUTS 强>
SELECT *
FROM USERS
WHERE USER_ID = 'jim'
OR USER_ID = 'mary'
OR USER_ID = 'bob'