명령이 동기화되지 않음, MySQL 준비 문 문제
두 개의 MySQL을 실행하려고 시도하는 동안 "명령이 동기화되지 않음" 오류가 발생했습니다. mysqli와 PHP를 사용한 쿼리. 이 오류는 버퍼링되지 않은 쿼리가 여러 개 진행 중이고 명령이 올바른 순서로 실행되지 않을 때 발생합니다.
코드에서 $countQuery 및 $recordsQuery라는 두 개의 쿼리를 준비했습니다. 그러나 기본적으로 mysqli는 준비된 문에 대해 버퍼링되지 않은 쿼리를 사용합니다. 이는 다음 쿼리를 실행하기 전에 각 쿼리에 대한 결과를 가져와야 함을 의미합니다.
오류 원인
코드가 $ 루프 내에서 $recordsQuery를 실행하려고 시도합니다. countQuery. $countQuery의 결과를 가져오지 않기 때문에 mysqli는 이를 버퍼링되지 않은 쿼리로 처리하고 $recordsQuery를 순서 없이 실행하게 됩니다. 이로 인해 "명령이 동기화되지 않음" 오류가 발생합니다.
해결 방법
이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.
store_result()의 예
if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the query results $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; // Continue with your code...
참고:
$countQuery를 사용하여 $recordsQuery 이전의 행 수를 계산하는 경우 $recordsQuery를 실행하기 전에 $numRecords->free_result()를 사용한 $countQuery의 결과입니다. store_result를 사용하는 경우에는 필요하지 않습니다.
위 내용은 PHP의 MySQL 준비 명령문에서 '명령이 동기화되지 않음' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!