Escape имя таблицы MySQL

У меня есть небольшая проблема с экранированием имени таблицы. Я был настолько глуп, что я выбрал "шоу" для названия таблицы. Когда я использую соединение mysqli, экранирование работает нормально, но не работает с классическим соединением 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 –

запрос

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

3 ответа

Решение

Раздел 9.3 Справочного руководства по MySQL 5.1 говорит обратные тики (`) или двойные кавычки ("), однако я бы пошел с комментарием Фахима Паркара выше и просто переименовал таблицу.

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

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

Проблема с ГОДОМ, а не с ШОУ. ГОД является функцией MySQL. Лучшая практика заключается в постоянном цитировании имен столбцов и таблиц, что облегчает чтение.

Должно быть:

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

Backticks должны работать нормально

попробуйте поставить запятую после SQL_CALC_FOUND_ROWS,

SELECT SQL_CALC_FOUND_ROWS, year, nameShow 
FROM   `show`
LIMIT 0, 10
Другие вопросы по тегам