我试图将查询已经找到的数组传递给另一个查询。例如:
$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}';
第二个查询似乎无法正常工作。非常感谢任何帮助!
答案 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