使用php的mysql嵌套子查询

时间:2012-12-23 12:21:39

标签: php mysql

我有两张桌子。我希望能够从下面的订单表代码中获取信用表中每个id的订单:

$downlinequery = "SELECT recid, Level, sp1 FROM credit 
                  WHERE sp1 = '$id' or sp2 = '$id' or sp3 = '$id' or sp4 = '$id' 
                  or sp5 = '$id' or sp6 = '$id' or sp7 = '$id' or sp8 = '$id'" ; 
$downlineresult = mysql_query($downlinequery) ;
while ($downlinerow = mysql_fetch_array($downlineresult)) {
  extract($downlinerow) ;
  $orderquery = "SELECT date,cc,cop FROM order WHERE userid='1127'" ;
  $orderresult = mysql_query($orderquery) or die("unable to get orders");
  while($orderrow = mysql_fetch_array($orderresult)){
    extract($orderrow);
    echo "$date,$cc,$cop" ;
  }
}

但我一直收到错误:无法获得订单

是否有可能在另一个正在运行时进行查询?

2 个答案:

答案 0 :(得分:2)

可能会发生错误,因为“ORDER”是reserved word in MySQL。你应该用反引号来逃避它:

$orderquery = "SELECT date,cc,cop FROM `order` WHERE userid=1127" ;

同样应该是“日期”,虽然这是可以容忍的(在我链接的同一页中进一步说明)

至于你的问题,当然你可以在一个循环中进行查询(虽然这在性能方面并不是最好的)。但是如果你的表有一个foreing键(我猜'recid'和'userid')你可以建立一个JOINed查询

答案 1 :(得分:1)

根据您的实际问题: 我不认为这个问题是对的。第一个查询未运行。它运行并填充结果$ downlineresult(mysql_query)然后,你只是通过结果的部分迭代(mysql_fetch_array)。

您的MySQL查询中似乎有错误,因此您应该使用:

echo mysql_error(); 

请参阅您使用的方法的说明: