我已经在PHP中创建了一个包含几个USER_ID的数组。我正在使用具有名为USERS的表的mysql数据库。 现在我只想选择那些user_id与数组中USER_IDs匹配的USERS行。Mysql SELECT语句与PHP数组
在此先感谢
我已经在PHP中创建了一个包含几个USER_ID的数组。我正在使用具有名为USERS的表的mysql数据库。 现在我只想选择那些user_id与数组中USER_IDs匹配的USERS行。Mysql SELECT语句与PHP数组
在此先感谢
$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
implode()
阵列为IN
子句中的SQL:
$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) . ");";
也许是有人认为他们需要upvote他们喜欢的答案,downvote其他人(我的太)? –
可惜,我们无法看到谁投了下来...... –
IN
上面的例子可能更干净,但这是另一种方法。我已经为了人类的可读性而进行了格式化。请注意,如果用户名是用户提交的,或者可能不安全,请确保在构建$users
阵列时使用mysql_real_escape_string()
。
<?php
$users = array('jim','mary','bob');
$userids = "USER_ID = '".implode("' \n OR USER_ID = '",$users)."'";
echo "
SELECT *
FROM USERS
WHERE $userids
";
?>
产出
SELECT *
FROM USERS
WHERE USER_ID = 'jim'
OR USER_ID = 'mary'
OR USER_ID = 'bob'
而对于其他@users,请不要提供重复的答案。 –
+1,给点答案。 –