2012-06-12 4 views
4

탈출 테이블 이름에 약간의 문제가 있습니다. 나는 테이블의 이름으로 "쇼"를 선택하기에 너무 어리 석었다. mysqli 연결을 사용할 때 이스케이프는 정상적으로 작동하지만 고전적인 mysql 연결에서는 작동하지 않습니다. 어떤 조언? 영어로 죄송합니다. 나는 원어민이 아닙니다.탈출 테이블 이름 MySQL

SELECT SQL_CALC_FOUND_ROWS year, nameShow 
FROM `show` 
LIMIT 0, 10 

나는

$sQuery = " 
    SELECT SQL_CALC_FOUND_ROWS year, nameShow 
    FROM `show` 
    $sWhere 
    $sOrder 
    $sLimit 
    "; 
+6

어떤 오류를받을 수 있나요? –

+6

이 실수를 할 때 항상 [RENAME TABLE tbl_name to new_tbl_name] (http://dev.mysql.com/doc/refman/5.0/en/rename-table.html) 명령을 실행하고 테이블에 적절한 이름을 부여하십시오. –

+0

이 오류가 발생했습니다. 'SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 'show'at line 2 근처에서 사용하십시오. –

답변

4

Section 9.3 of MySQL 5.1 Reference Manual 다시 말한다 (") (`) 진드기 나 큰 따옴표

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show' at line 2 – 

쿼리로 오류가 그러나 나는 파힘 Parkar의 의견에 가고 싶어 얻을 테이블의 이름을 변경하십시오.

큰 따옴표 p를 사용하는 경우 ANSI_QUOTES SQL 모드를 사용해야합니다. Section 9.2 어 :

ANSI_QUOTES SQL 모드가 활성화되어있는 경우

, 그것은 큰 따옴표

에 있습니다 인용 식별자에 허용된다이
+1

마지막으로 나는 일하는 쿼리를 가지고있다.Idon't는 다른 솔루션이 일하지 않고 있었던 이유를 알고있다. 그러나 이것은 작동합니다 :'serialtracker. \'show \'' –

1

역 따옴표가

가 SQL_CALC_FOUND_ROWS 뒤에 쉼표를 넣어 시도 잘 작동합니다,

SELECT SQL_CALC_FOUND_ROWS, year, nameShow 
FROM `show` 
LIMIT 0, 10 
+0

나는 그것이해야하는 것을 안다. 하지만 내가 뭘 잘못하고 있는지 몰라. '$ sQuery = " SELECT SQL_CALC_FOUND_ROWS 년, nameShow'show' $ sWhere $ sOrder $ sLimit FROM "; zdarsky.peter @' –

+1

: 당신이 당신의 질문에 쿼리를 게시 할 수 없습니다? 위 쿼리에서'show' 다음에 $ s는 무엇입니까 ?? 나는 이것이 당신 문제라고 생각합니다. –

6

문제점은 SHOW가 아닌 YEAR입니다. YEAR은 MySQL 함수입니다. 모범 사례는 항상 열과 테이블 이름을 인용하는 것이므로 읽기 쉽습니다.

은 다음과 같아야합니다

SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow` 
FROM `show` 
LIMIT 0, 10 
관련 문제