2011-09-24 138 views
3

我已经在PHP中创建了一个包含几个USER_ID的数组。我正在使用具有名为USERS的表的mysql数据库。 现在我只想选择那些user_id与数组中USER_IDs匹配的USERS行。Mysql SELECT语句与PHP数组

在此先感谢

回答

7

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) . ");"; 
+1

也许是有人认为他们需要upvote他们喜欢的答案,downvote其他人(我的太)? –

+0

可惜,我们无法看到谁投了下来...... –

2

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' 

http://codepad.org/YfkPBEaJ