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
'program tip' 카테고리의 다른 글
OpenSSL 및 C ++로 sha256 생성 (0) | 2020.12.04 |
---|---|
클래스 이름에 점 (.)으로 요소 스타일 지정 (0) | 2020.12.04 |
document.write없이 HTML 페이지에 JavaScript 변수를 표시하는 방법 (0) | 2020.12.04 |
배열로 파일 이름 읽기 (0) | 2020.12.04 |
Mac에 설치 한 후 git gui가 작동하지 않음 (예 : Mountain Lion) (0) | 2020.12.04 |