2011-11-23 41 views
-1

我试图用2个表中的数据创建一个循环,这个东西给了我一个错误,表示结果不止一行。这是脚本。来自两个表的sql调用

$query_amoline = "SELECT * FROM `penny_players` WHERE `memid`=\"$curmemid\" AND id= (SELECT id FROM `penny` WHERE `active`='Y') ORDER BY `id` DESC"; 
$amoline = mysql_query($query_amoline) or die(mysql_error()); 
$row_amoline = mysql_fetch_assoc($amoline); 
$totalRows_amoline = mysql_num_rows($amoline); 

<? if($totalRows_amoline>0) 
{ ?> 
<?php do { ?> 
<?php 
$id=$row_amoline['id']; 
$pid=$row_amoline['pennyid']; 

if($totalRows_amoline>0) 
{ ?> 
} 

回答

1

如果

SELECT id FROM `penny` WHERE `active`='Y' 

回报不止一个ID,您的查询就会失败。

更改为:

"SELECT * FROM `penny_players` WHERE `memid`=\"$curmemid\" AND id IN (SELECT id FROM `penny` WHERE `active`='Y') ORDER BY `id` DESC"; 
+0

你们是吓坏geniusses –

1

你可能是指... AND id IN (...,因为在penny多行有active设置为Y

1
"SELECT pp.* 
    FROM penny_players pp 
    WHERE pp.memid=\"$curmemid\" 
     AND EXISTS(SELECT NULL 
         FROM penny p 
         WHERE p.id = pp.id 
          AND p.active = 'Y') 
    ORDER BY pp.id DESC"