2012-10-30 2 views
0

여러 개의 MYSQL SELECT 쿼리가 서로 연결되어 있고 첫 번째 쿼리는 행 ID를 선택하고 배열에 넣는다. 두 번째 SELECT 쿼리는 10,14 등의 값을 사용하여 acess를 사용해야한다. 다른 테이블 레스토랑 정보의 나머지를 갖는 문제 IM 번째 쿼리가 14mysql에서 배열 값 사용하기

$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의 phone_number를 선택하지 않은 이유는 무엇입니까? 배열을 다시 반복하는 일종의 여분의 함수가 필요합니까, iv'e는 implode 및 mysql_value 함수를 시도하고, iv'e는 내가 생각할 수있는 모든 것을 시도했습니다.

+0

SQL 조인을하는 방법을 배우면 데이터베이스에서 감사하게 키스합니다. –

답변

0

코드는 신중히 형식이 지정됩니다. 당신이 적절한 들여 쓰기를 사용했다, 당신은 당신의 첫번째 동안은() 루프가 잘못된 것을 볼 것입니다 :

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 만 실행하면됩니다.

그것은해야

문제는 당신이 레스토랑 ID 년대 통해 반복하고 $retval1에 해당 값을 넣고, eacy restaruant에 대한 쿼리를 실행하고 있는지 것으로 보인다
while(... first query) { 
     print values 
     do inner query 
     while (fetch inner query) { 
      print values 
     } 
} 
0

- 따라서 해당 배열을 사용하여 쿼리 할 때, 그 안에 마지막 전화 번호 만 있습니다.