在sql中传递值数组select where语句where

时间:2014-01-16 07:38:52

标签: php sql moodle

$sql = "select id from table_name ";

$result = mysql_query($sql); 

$data = array();
while($row = mysql_fetch_assoc($result))
{
 $data[] = $row[id];

}

/ * $ data包含从db.now的sql查询中获取的id我希望将$ id数组中的id(值数组)一个接一个地传递给where条件下的select查询,并获得每个id的所需结果。我的问题是如何将值数组传递给下面的select语句我不知道该怎么做。非常感谢任何帮助。* /

$query = "select * from table where id1 = $data[] ";

4 个答案:

答案 0 :(得分:1)

$query = "select * from table where `id1` in (" . implode(', ', $data) . ")";

答案 1 :(得分:1)

您应该在Moodle中使用名为get_in_or_equal()

的跨数据库功能
list($where, $params) = $DB->get_in_or_equal($data, SQL_PARAMS_NAMED);
$sql = "SELECT *
        FROM {table}
        WHERE $id {$where}"
$records = $DB->get_records_sql($sql, $params);

答案 2 :(得分:0)

您可以使用IN子句。 当您完全确定$data数组中只有数值时。您可以执行以下操作:

$query = "select * from table where id1 IN(" . implode(',', $data) . ")";

答案 3 :(得分:0)

您可以使用:

$comma_separated = implode(",", $data);
if ($comma_separated != "")
    $query = "select * from table where id1 IN($comma_separated)";