몇 년 전에 작성한 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_query
和 db_fetch
기능을 사용하여 구체적으로 도움을 요청하는 것입니다.
P粉7181655402024-01-17 12:42:35
귀하가 받은 오류는 mysqli 함수(따라서 MySQL 명령)를 순서 없이 실행하려고 한다는 의미입니다. MySQL은 현재 예상하지 못한 명령을 받으면 이 오류로 응답합니다.
코드 어디에도 free_result()
或 close()
를 추가하지 마세요. 적절하게 구조화된 코드에는 이러한 기능이 없어야 합니다. 단지 스파게티 코드의 메모리 누수를 방지하기 위한 것입니다.
이 오류를 해결하려면 작업이 올바른 순서로 수행되는지 확인해야 합니다. 하지만 이 코드는 무슨 일이 일어나고 있는지 파악하기에는 너무 혼란스럽습니다. 다시 작성해야 합니다!
다음과 같이 간단한 것을 시도해 보세요:
으아악다른 기능도 비슷한 방식으로 정리해야 합니다.
실제 문제는 전화를 store_result()
两次。最简单的解决方法是删除其中之一。但是删除哪一个是一个谜,因为这段代码并没有明确说明哪一个(如果有的话)实际上是必要的。您可能可以删除两者,但是 db_num_rows
하면 작동하지 않는다는 것입니다.