변수 테이블 이름이 필요한 MySQL 쿼리를 실행할 때 사용자는 질문에 보고된 것과 같은 오류가 발생할 수 있습니다. 이 문서의 목적은 준비된 문의 사용법을 살펴보고 이 특정 문제에 대한 솔루션을 제공하는 것입니다.
"[Err] 1064 - 오류가 있습니다. SQL 구문"은 MySQL 서버가 쿼리 구문을 올바르게 해석할 수 없음을 나타냅니다. 쿼리 문에서 직접 변수 "@table"을 사용하는 것이 원인일 수 있습니다.
준비된 문은 변수 테이블 이름과 관련된 동적 쿼리를 처리하기 위한 안정적인 접근 방식을 제공합니다. 이를 통해 쿼리 템플릿을 정의하고 나중에 값을 동적으로 대체할 수 있습니다. 이 경우 CONCAT 함수를 사용하여 쿼리 템플릿을 정의하여 변수 테이블 이름을 작성할 수 있습니다.
다음 단계를 고려하세요.
SET @id := '47'; SET @table := CONCAT(@id, '_2013_2014_voucher'); SET @qry1 := CONCAT('SELECT * FROM ', @table);
이렇게 하면 동적 쿼리 템플릿이 변수 @qry1.
다음으로 PREPARE 명령을 사용하여 명령문을 준비합니다.
PREPARE stmt FROM @qry1;
이제 필요에 따라 다른 테이블 이름을 대체하여 준비된 명령문을 여러 번 실행할 수 있습니다.
EXECUTE stmt;
쿼리 삭제에도 동일한 접근 방식을 적용할 수 있습니다. CONCAT을 사용하여 동적 쿼리 템플릿을 구성하고 위와 같이 준비하면 됩니다.
SET @qry2 := CONCAT('DELETE FROM ', @table, ' WHERE id = @id');
MySQL에서 동적 테이블 이름이 포함된 준비된 문을 사용하면 변수 테이블 이름이 포함된 쿼리를 효율적으로 실행할 수 있습니다. 그리고 우아하게. 문자열 연결에 CONCAT 기능을 활용하고 향상된 쿼리 유연성과 성능을 위해 준비된 문의 기능을 활용하는 것을 잊지 마세요.
위 내용은 MySQL에서 변수 테이블 이름을 사용하여 동적 쿼리를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!