0

複数のMYSQLSELECTクエリが相互にフィードされ、最初のクエリは行IDを選択して配列に配置し、2番目のSELECTクエリはこれらの値10、14などを使用して、他のテーブルの残りのレストラン情報にアクセスする必要があります、私が抱えている問題は、2番目のクエリが配列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

10ではなく14のphone_numberのみを選択するのもなぜですか?配列を再度ループするために、なんらかの追加関数が必要ですか。iv'eはimplode関数とmysql_value関数を試しました。iv'eは考えられるすべてのことを試しました。助けていただければ幸いです。

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ループの一部ではないため、その電話番号フェッチクエリを1回だけ実行します。

そのはず

 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 に答える