program tip

mysql 결과를 두 번 확인하는 방법은 무엇입니까?

radiobox 2020. 12. 4. 08:05
반응형

mysql 결과를 두 번 확인하는 방법은 무엇입니까?


어떤 이유로 든 mysql 결과 집합을 두 번 거쳐야합니다. 그것을 할 방법이 있습니까? 쿼리를 두 번 실행하고 싶지 않고 행을 어딘가에 저장 한 다음 나중에 다시 사용하도록 스크립트를 다시 작성할 필요가 없습니다.


다음과 같이 할 수 있습니다.

$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
 // do whatever here...
}

// set the pointer back to the beginning
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($result)){
 // do whatever here...
}

그러나 나는 이것이 이것을 처리하는 올바른 방법이 아닌 것 같다고 말해야 할 것입니다. 왜 첫 번째 루프 내에서 처리하지 않습니까?


여부 시도 mysql_data_seek ()는 당신이 필요로한다.

mysql_data_seek ()는 지정된 결과 식별자와 연관된 MySQL 결과의 내부 행 포인터를 지정된 행 번호를 가리 키도록 이동합니다. mysql_fetch_assoc ()와 같은 MySQL 가져 오기 함수에 대한 다음 호출은 해당 행을 반환합니다.

row_number는 0에서 시작합니다. row_number는 0에서 mysql_num_rows ()-1 사이의 값이어야합니다. 그러나 결과 집합이 비어있는 경우 (mysql_num_rows () == 0) 0에 대한 탐색은 E_WARNING 및 mysql_data_seek와 함께 실패합니다. ()는 FALSE를 반환합니다.


들어 mysqli 다음을 수행해야합니다;

$result= $con->query($sql); // $con is the connection object
$result->data_seek(0); 

데이터 검색의 대안은 값을 배열에 저장하는 것입니다.

$arrayVals = array();
$result = mysql_query(/* Your query */);
while($row = mysql_fetch_assoc($result)){
    $arrayVals[] = $row;
}

// Now loop over the array twice instead

$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
    $row = $arrayVals[$x];

    // Do something here    
}

$len = count($arrayVals);
for($x = 0; $x < $len; $x++) {
    $row = $arrayVals[$x];

    // Do something else here   
}

나는 이것을 시도하지 않았다고 고백하지만 첫 번째 반복 후에 시도 했습니까?

mysql_data_seek($queryresult,0);

첫 번째 레코드로 이동하려면?


mysql_data_seek사용 하여 내부 포인터를 데이터 세트의 시작 부분으로 이동할 수 있습니다 . 그런 다음 다시 반복 할 수 있습니다.


글쎄, 당신은 항상 읽은 행 수를 세고 다음과 같이 할 수 있습니다.

if (rownumber == mysql_num_rows($result)) { mysql_data_seek($result, 0); }

왜 필요한지 모르겠지만 거기에 있습니다.

참고URL : https://stackoverflow.com/questions/6439230/how-to-go-through-mysql-result-twice

반응형