2012-10-05 61 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而不是=子查询结果。