带有php数组的Mysql SELECT语句[重复]

Posted

技术标签:

【中文标题】带有php数组的Mysql SELECT语句[重复]【英文标题】:Mysql SELECT statement with php array [duplicate] 【发布时间】:2011-11-24 05:35:36 【问题描述】:

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

提前致谢

【问题讨论】:

【参考方案1】:
 $ids = join(',',$user_ids);  
 $sql = "SELECT * FROM USERS WHERE user_id IN ($ids)";

Passing an array to a query using a WHERE clausehttp://www.php.net/manual/en/function.join.phphttp://www.php.net/manual/en/function.implode.php

【讨论】:

对于所有其他@users,请不要提供重复的答案。 +1,重点回答。【参考方案2】:

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

【讨论】:

也许有人认为他们需要对自己喜欢的答案投赞成票而对其他答案投反对票(我的也是)? 可惜,我们看不到谁投了反对票……【参考方案3】:

上面的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

【讨论】:

以上是关于带有php数组的Mysql SELECT语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP Array into mysql select 语句

MYSQL 类似数组的 SELECT 语句

在 MYSQL 语句中连接 PHP 变量 DATETIME [重复]

php中查询mysql select 第一个字段 第二个字段 from 表名。输出语句应

PHP MySQL 语句 - "select as" 和 "where"

php+mysql select 变量 from