2012-06-12 2 views
4

У меня есть небольшая проблема с именем escaping table. Я был настолько глуп, что выбрал «show» для названия таблицы. Когда я использую соединение mysqli, escaping работает нормально, но не работает с классическим подключением mysql. Есть рекомендации? Извините за мой английский, я не носитель языка.Имя таблицы побега MySQL

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

я получаю ошибку, как

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 – 

Query

$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' в строке 2' –

ответ

4

Section 9.3 of MySQL 5.1 Reference Manual говорит назад клещами (`) или двойные кавычки ("), тем не менее, я бы с комментарием Фахим Parkar в выше и просто переименуйте таблицу.

Также стоит отметить, что вы должны использовать режим ANSI_QUOTES SQL, если использовать двойные кавычки p эр Section 9.2:

Если режим ANSI_QUOTES SQL включен, также допустимо кавычки идентификаторы в двойные кавычки

+1

Наконец у меня есть рабочий запрос.Я не знаю, почему другие решения не работают. Но это работает: 'serialtracker. \' Show \ '' –

1

Обратные кавычки должны работать нормально

попытаться поместить запятую после SQL_CALC_FOUND_ROWS,

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

Я знаю, что это нужно. Но я не знаю, что я делаю неправильно. '$ SQuery = " ВЫБРАТЬ SQL_CALC_FOUND_ROWS год, nameShow ОТ 'show' $ sWhere $ sOrder $ sLimit "; ' –

+1

@ zdarsky.peter: Не могли бы вы опубликовать запрос в вашем вопросе ?? В запросе выше, что $ s после 'show' ?? Я думаю, что это ваша проблема –

6

Проблема с YEAR не с SHOW. YEAR - это функция MySQL. Лучшая практика - постоянно указывать имена столбцов и таблиц, что также упрощает чтение.

Должно быть:

SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow` 
FROM `show` 
LIMIT 0, 10 
Смежные вопросы