在查询字符串中使用数组

时间:2011-06-09 21:48:18

标签: php arrays string

我试图将查询已经找到的数组传递给另一个查询。例如:

$first_query = "SELECT id FROM from Table WHERE user = '{$_SESSION['id'}'";
$result = mysql_query($first_query,$connection);
$ids = mysql_fetch_array($result);

这对我来说很棘手。我想将$ ids传递给下一个查询。

$id_implode = implode(", ", $ids)
$second_query = "SELECT * FROM Table2 WHERE id = '{$id_implode}';

第二个查询似乎无法正常工作。非常感谢任何帮助!

4 个答案:

答案 0 :(得分:5)

你的第二个查询的语法错误。评估后应阅读

select * from Table2 where id in (1,2,3)

抛弃花括号并将=更改为。不要使用OR - 这是一种忽略良好sql功能的愚蠢方式

编辑:Teneff的评论非常好 - 你为什么要以这种方式解决问题?如果表之间存在关系,则可以将它们连接起来,并且可以在单个查询中检索所需的所有数据。如果由于某种原因你不能/不会加入表格,你至少可以尝试子查询

select * from table2 where id in (select id from table where user = $_SESSION['id']);

答案 1 :(得分:1)

尝试使用IN语法:

$id_implode = implode("', '", $ids);
$second_query = "SELECT * FROM Table2 WHERE id in ('{$id_implode}');

答案 2 :(得分:1)

要使用包含多个条目的where语句,请使用in ()

$id_implode = "'".implode("', '", $ids)."'"
$second_query = "SELECT * FROM Table2 WHERE id in ({$id_implode});

答案 3 :(得分:1)

我认为你应该使用IN

$id_implode = implode(", ", $ids)
$second_query = "SELECT * FROM Table2 WHERE id IN '({$id_implode})';

这假设$ ids当然是由int组成的,否则你必须用引号括起eache条目。这意味着

IN (6,7,8,9)//this doesn't need quotes

IN ('lemon', 'orange')//needs quotes