用php数组的Mysql SELECT语句

时间:2011-09-24 12:14:02

标签: php mysql

我在php中创建了一个包含一些USER_ID的数组。我正在使用具有名为USERS的表的mysql数据库。 现在我想只从USERS中选择那些user_id与数组中的USER_ID匹配的行。

提前致谢

3 个答案:

答案 0 :(得分:9)

答案 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'

http://codepad.org/YfkPBEaJ