2012-10-30 77 views
0

我已經多個MySQL SELECT querys在彼此飼料,第一個選擇行的id,把它們在陣列中使用的數組值,第二個SELECT查詢需要使用這些值10,14等,以接取在其他表中的餐館信息的其餘部分,將具有問題IM是基於所述陣列中的最後一個值14在MySQL凡

$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 

所述第二查詢僅選擇最後PHONE_NUMBER只有爲什麼選擇14的電話號碼不是10呢?我需要某種形式的額外功能,以循環通過數組再次,iv'e試圖破滅和mysql_value功能,iv'e嘗試一切我能想到的任何幫助表示讚賞。

+0

學習如何做SQL連接,並且數據庫會吻你的感激之情 –

回答

0

您的代碼attrociously格式化。假如你使用正確的縮進,你會看到你的第一個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 
     } 
} 
0

的問題似乎是,你是通過餐廳ID的循環和運行一個查詢eacy RESTARUANT,把只值到$retval1 - 因此,當你查詢中使用該數組,它只有最後一個電話號碼。