【发布时间】:2011-11-24 05:35:36
【问题描述】:
我在 php 中创建了一个包含几个 USER_ID 的数组。我正在使用具有名为 USERS 的表的 mysql 数据库。 现在我只想从 USERS 中选择那些 user_id 与数组中的 USER_ID 匹配的行。
提前致谢
【问题讨论】:
我在 php 中创建了一个包含几个 USER_ID 的数组。我正在使用具有名为 USERS 的表的 mysql 数据库。 现在我只想从 USERS 中选择那些 user_id 与数组中的 USER_ID 匹配的行。
提前致谢
【问题讨论】:
$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() 将数组放入 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) . ");";
【讨论】:
上面的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'
【讨论】: