찾다

 >  Q&A  >  본문

이전 PHP 버전에서 php8.2.5로 업데이트할 때 "잡히지 않은 mysqli_sql_Exception: 명령이 동기화되지 않았습니다. 지금은 이 명령을 실행할 수 없습니다"

몇 년 전에 작성한 PHP 5용 mysqli 래퍼가 있는데 PHP 8.2.5에서 실행하려고 하면 오류가 발생합니다. 나는 모든 것을 시도했습니다. 두 가지 주요 기능은 다음과 같습니다.

으아악

행을 얻으려면 표준 쿼리를 사용하여 수행할 수 있습니다.

으아악

store_result() 的行(在 db_fetch)이 포함된 함수에서 다음 오류가 발생합니다.

잡히지 않은 mysqli_sql_Exception: 명령이 동기화되지 않았습니다. 지금은 이 명령을 실행할 수 없습니다.

저는 코드의 다른 섹션에 $stmt->free_result()$stmt->close()를 추가하는 것을 포함하여 거의 모든 것을 시도했습니다.

질문은 $stmt->free_request()$stmt->close() 重写此代码段,所以发生最少的代码更改并可以尽可能地保持原样。这些将在 db_querydb_fetch기능을 사용하여 구체적으로 도움을 요청하는 것입니다.

P粉883278265P粉883278265321일 전586

모든 응답(1)나는 대답할 것이다

  • P粉718165540

    P粉7181655402024-01-17 12:42:35

    귀하가 받은 오류는 mysqli 함수(따라서 MySQL 명령)를 순서 없이 실행하려고 한다는 의미입니다. MySQL은 현재 예상하지 못한 명령을 받으면 이 오류로 응답합니다.

    코드 어디에도 free_result()close()를 추가하지 마세요. 적절하게 구조화된 코드에는 이러한 기능이 없어야 합니다. 단지 스파게티 코드의 메모리 누수를 방지하기 위한 것입니다.

    이 오류를 해결하려면 작업이 올바른 순서로 수행되는지 확인해야 합니다. 하지만 이 코드는 무슨 일이 일어나고 있는지 파악하기에는 너무 혼란스럽습니다. 다시 작성해야 합니다!

    다음과 같이 간단한 것을 시도해 보세요:

    으아악

    다른 기능도 비슷한 방식으로 정리해야 합니다.

    실제 문제는 전화를 store_result() 两次。最简单的解决方法是删除其中之一。但是删除哪一个是一个谜,因为这段代码并没有明确说明哪一个(如果有的话)实际上是必要的。您可能可以删除两者,但是 db_num_rows하면 작동하지 않는다는 것입니다.

    회신하다
    0
  • 취소회신하다