0

我有多个 MYSQL SELECT 查询相互提供,第一个选择行 id,将它们放在一个数组中,第二个 SELECT 查询需要使用这些值 10,14 等,以访问其他表中的其余餐厅信息,我遇到的问题是第二个查询仅根据数组 14 中的最后一个值选择最后一个 phone_number。

$city= 'london';
$cuisine ='indian';


$sql=(" SELECT restaurant_id FROM restaurants WHERE  city = '$city' AND cuisine=                     '$cuisine'  ");

mysql_select_db('RESTAURANTS');
$retval = mysql_query( $sql, $conn ); 
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))


foreach ($row as $key => $value) { 
$i++; // increment $i by one each loop pass 

echo "Cart Item $i ______ key = $key | value = $value<br />"; }





$sql1 = "SELECT phone_number FROM restaurants WHERE  ($key) IN ($value)";



mysql_select_db('RESTAURANTS');
$retval1 = mysql_query( $sql1, $conn ); 
if(! $retval1 )
{
die('Could not get data: ' . mysql_error());
}
while($row1 = mysql_fetch_array($retval1, MYSQL_ASSOC))


foreach ($row1 as $k => $v) { 
$ii++; // increment $i by one each loop pass 
         print_r ($v);


}
?> 

输出

Cart Item 1 ______ key = restaurant_id | value = 10
Cart Item 2 ______ key = restaurant_id | value = 14

// the phone_number
444444444

只选择14而不是10的phone_number还为什么呢?我是否需要某种额外的函数来再次循环遍历数组,我尝试了 implode 和 mysql_value 函数,我尝试了我能想到的一切,感谢任何帮助。

4

2 回答 2

0

你的代码格式很糟糕。如果您使用了正确的缩进,您会发现您的第一个 while() 循环格式错误:

while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
                                                      ^--- no {
    foreach ($row as $key => $value) { 
    $i++; // increment $i by one each loop pass 

    echo "Cart Item $i ______ key = $key | value = $value<br />"; }

因此,它将检索第一个查询的所有行并输出各个字段。但是由于您没有使用正确的括号,下一段代码(您的下一个 sql 查询/循环)不是第一个 while 循环的一部分,因此您只执行该电话号码获取查询ONCE

它应该是

 while(... first query) {
      print values
      do inner query
      while (fetch inner query) {
           print values
      }
 }
于 2012-10-30T16:35:33.657 回答
0

问题似乎是您正在遍历餐厅 ID 并运行对 eacy restaruant 的查询,仅将该值放入$retval1- 因此当您使用该数组进行查询时,它只有最后一个电话号码。

于 2012-10-30T16:36:07.747 回答