본문 바로가기
MySql

MySQL Symfony 쿼리 오류 : 예상 리터럴, ' "'있음

by 베이스 공부 2020. 11. 24.
반응형

다음 쿼리가 있습니다.

$query = $em->createQueryBuilder()
            ->select('u.id, u.username, u.username_canonical, u.email, u.email_canonical, u.last_login, u.name, u.type, u.phone, u.site, u.agency, u.subtype, u.info, u.created_date, u.vip')
            ->from('ContrateAdminBundle:Fosuser', 'u')
            ->where('u.created_date BETWEEN "'.$fromdateaccounts.'" AND "'.$todateaccounts.'" ')                      
            ->getQuery();

$results = $query->getResult();

Symfony에서 사용자 데이터를 가져 왔지만 다음 오류가 발생했습니다.

[Syntax Error] line 0, col 223: Error: Expected Literal, got '"'
500 Internal Server Error - QueryException
1 linked Exception: QueryException »

내 쿼리 출력은 다음과 같습니다.

SELECT u.id, u.username, u.username_canonical, u.email, u.email_canonical, u.last_login, u.name, u.type, u.phone, u.site, u.agency, u.subtype, u.info, u.created_date, u.vip
FROM ContrateAdminBundle:Fosuser u
WHERE u.created_date BETWEEN "2014-08-04 13:29" AND "2014-10-30 13:29" 

 

해결 방법

 

SQL의 문자열 리터럴은 큰 따옴표 "가 아니라 작은 따옴표 '로 표시되므로 쿼리에서 "를 문자열 구분 기호로 바꿔야합니다. 작성자 : ' :

$query = $em->createQueryBuilder()
            ->select('u.id, u.username, u.username_canonical, u.email, u.email_canonical, u.last_login, u.name, u.type, u.phone, u.site, u.agency, u.subtype, u.info, u.created_date,u.vip')
            ->from('ContrateAdminBundle:Fosuser', 'u')
            ->where('u.created_date BETWEEN \'${fromdateaccounts}\' AND \'{$todateaccounts}\'')                      
            ->getQuery();

 

참조 페이지 https://stackoverflow.com/questions/28406309

 

 

반응형

댓글