버퍼링되지 않은 다른 쿼리가 아직 활성화되어 있는 동안 쿼리를 실행하려고 하면 MySQL 오류 2014가 발생합니다. 활동적인. 이는 PDO::ATTR_EMULATE_PREPARES가 false로 설정된 준비된 문을 사용할 때 발생할 수 있습니다.
PDO::ATTR_EMULATE_PREPARES가 true인 경우 PDO는 준비된 문을 일반 SQL 쿼리로 변환하여 에뮬레이트합니다. 이는 서버가 각 데이터 행에 대해 한 번씩 쿼리를 실행하여 버퍼링되지 않은 쿼리가 동시에 실행될 수 있음을 의미합니다.
그러나 PDO::ATTR_EMULATE_PREPARES가 false인 경우 PDO는 준비된 명령문을 서버에 보냅니다. 커서를 열어 두십시오. 이렇게 하면 커서가 닫힐 때까지 다른 쿼리가 실행되지 않습니다.
이 오류에 대한 몇 가지 해결 방법이 있습니다.
제공된 코드 조각에는 $stmt2 쿼리가 루프 내에서 여러 번 실행되는 문제가 있습니다. 이는 불필요하며 성능 향상을 위해 루프 외부로 이동할 수 있습니다.
위치 매개변수(배열이 있는 PDO::execute()) 대신 명명된 매개변수(PDO::bindParam())를 사용하는 것이 좋습니다. 준비된 진술을 위해. 이렇게 하면 코드의 가독성이 높아지고 SQL 삽입 위험이 줄어듭니다.
MySQL 오류 2014는 버퍼링되지 않은 쿼리를 제대로 처리하지 못하여 발생할 수 있습니다. 버퍼링된 쿼리를 사용하거나 fetchAll()을 호출하거나 커서를 닫으면 이 오류를 피할 수 있습니다.
위 내용은 MySQL 오류 2014: \'버퍼링되지 않은 다른 쿼리가 활성화되어 있는 동안 쿼리를 실행할 수 없습니다\'가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!