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