2011-06-09 54 views
1

我試圖將我已經通過查詢找到的數組傳遞給另一個查詢。例如:在查詢字符串中使用數組

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

這是對我來說很棘手的地方。我想將$ id傳遞給下一個查詢。

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

第二個查詢似乎沒有工作。任何幫助是極大的讚賞!

+2

使用'JOIN'來代替? – Teneff 2011-06-09 21:51:26

回答

5

您的第二個查詢語法錯誤。一旦評估應改爲

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

溝大括號並更改=在不使用或不 - 這是無視良好的SQL功能的一個愚蠢的方式

編輯:Teneff的評論使得非常好的一點 - 你爲什麼用這種方式來解決問題?如果表格之間存在關係,則可以在單個查詢中檢索所有您想要的數據。如果由於某種原因,你不能/不會參加表,你至少可以嘗試一個子查詢

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

嘗試使用IN語法:

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

'在哪裏ID'必須由paraenthesis'()'包圍。 http://dev.mysql.com/doc/refman/5.1/en/expressions.html – 2011-06-10 13:20:08

+0

是的,你是對的。我相應地改變了它 – 2011-06-16 20:14:56

1

要使用where聲明與多個條目匹配,請使用in()

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

我想你應該

$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