2012-10-05 221 views
0

我已經創建了一個嵌套select語句的mysql seect語句。現在我的mysql技能(或缺乏)非常有限。以下是我寫的代碼。我得到空白的結果或警告。 mysql_fetch_Array錯誤。現在我正在接收一個錯誤,指出「子查詢返回多於一行」任何人都可以在正確的方向上指明我如何開始解決此問題。謝謝您的幫助。Mysql嵌套查詢問題

<?php 
session_start(); 

$memberId = $_GET['id']; 

$loggedId = $_SESSION['id']; 

include('../connect_DB.php'); 

$sql = 'SELECT bins.tag_Id, tagging_Info.plant_Id, tagging_Info.photo_Id FROM bins inner join tagging_Info on bins.tag_Id = tagging_Info.tag_Id inner join collections on collections.id = bins.collection_Id WHERE collections.member_Id ='.$memberId.' and collections.id=(SELECT id FROM collections where member_Id='.$memberId.')'; 

$result = mysql_query($sql) or die(mysql_error()); 
while($row = mysql_fetch_array($result)) { 


    $collection = "Success"; // test to see if working 

} 
echo $collection; 

?> 
+1

您是否嘗試過僅執行子查詢來查看實際返回的記錄數,並確保$ memberId實際設置了?對於一個用戶來說,有多個集合是有意義的,所以你應該調整你的主查詢來在子查詢結果中使用IN而不是=。 –

+1

您的子查詢正在返回多行。您需要修改它只返回1行,或者修改主SELECT以使用IN而不是= – andrewsi

+0

KayakJim和Andrewsi感謝您的輸入。那到底是什麼。我限制子查詢返回一個結果,並且完美運行。非常感謝你們倆。對此,我真的非常感激。 –

回答

2

您是否嘗試過只執行子查詢來查看實際返回了多少條記錄並確保$ memberId實際設置了?

這對用戶有多個集合是有意義的,所以你應該調整你的主查詢來使用IN而不是=子查詢結果。