2011-03-29 19 views
1

내 친구가 나에게 어떻게해야할지 모를 질문을했습니다.PHP에서 SQL 쿼리를 한 번 이상 로밍하는 방법

문제는 쿼리의 결과 집합을 두 번 이상 사용하려고하기 때문입니다. 그가 원할 때마다.

예제 테이블과 예제 출력이 첨부되어 있습니다.

Select * from ornek1_ust 
Select * from ornek1_alt 

이 가능 우리는 이미 예 출력과 같은 몇 가지 출력을 가지고 PHP와이 결과 세트에서 로밍하는 것입니다 :

나는 두 번 만 쿼리합니다. 한 번만 전체 데이터로 데이터베이스를 쿼리하고 싶습니다. 그렇다면 언제든지 원할 때마다 사용하고 싶습니다.

예 테이블 :

Database Table 1: ornek1_ust

Database Table 2: ornek1_alt

예 출력 :

Example output

답변

0

당신을 "캐시"PHP에서 결과를 싶어 .... 배열에 쿼리 결과를 저장합니다. ,

SELECT ornek_ust1.isim AS ust, ornek1_alt.ism AS alt 
FROM ornek_ust1 
JOIN ornek1_alt ON ornek_ust1.id = ornek1_alt.ust_ID 
ORDER BY ornek_ust1.isim, ornek1_alt.ism 

및 PHP 내에서 같은 것을 수행합니다 : 데이터를 가져 오기 위해, 당신은 간단한 가입 쿼리를 할 거라고 원하는 데이터처럼 보이는 배열을 구축 할 것입니다

$data = array(); 

$sql = "SELECT ..."; 
$res = mysql_query($sql) or die(mysql_error()); 

while($row = mysql_fetch_assoc($res)) { 
    $data[$row['ust'][] = $row['alt']; 
} 

:

$data = array(
    'ust data1' => array(
      0 => 'alt data 1' 
      1 => 'alt data 2' 
    ), 
    'ust_data2' => ... etc... 
) 
0

그것은 당신이 데이터를 꺼내 할 수 mysql_result()를 사용하려면 같은 소리 의지대로 결과.

전체 데이터 세트를 반복하면서 다시 반복 할 수있게하려면 mysql_data_seek()을 사용하여 내부 포인터를 처음으로 되돌릴 수 있습니다.

+0

예, 실제로 원하는 결과 집합에서 필요한 데이터를 가져올 수 있기를 원합니다. – Mustafa

+0

위에서 제안한 두 가지 명령을 잘 수행하면 결과 세트를 돌아 다니면서 다시 작성하거나 다시 쿼리 할 필요없이 해당 부분을 사용할 수 있습니다. – Codecraft

0

그냥

$sql = "Select * from ornek1_ust"; 
$results = array(); 
$query = mysql_query($sql); 
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { 
    $results[] = $row; 
} 

// Use $results further on in your code 
+0

그러면 같은 데이터가 2 부 복사됩니다. 결과에서 개별 레코드를 가져오고 있다면 루프를 반복하고 메모리를 사용하여 이미 보유한 정보를 저장하지 않아도됩니다. – Codecraft

관련 문제