在mysql中使用数组值Where

时间:2012-10-30 16:28:04

标签: php mysql

我有多个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函数,我尝试了所有我能想到的东西,任何帮助表示赞赏。

2 个答案:

答案 0 :(得分: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循环的 NOT 的一部分,所以你只执行那个电话号码获取查询的 ONCE

应该是

 while(... first query) {
      print values
      do inner query
      while (fetch inner query) {
           print values
      }
 }

答案 1 :(得分:0)

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