Nombre de la tabla de escape MySQL

Tengo un pequeño problema con el nombre de la tabla de escape. Fui tan estúpido que elegí "mostrar" para el nombre de la tabla. Cuando uso la conexión mysqli, el escape funciona bien, pero no funciona con la conexión mysql clásica. ¿Algún consejo? Lo siento por mi inglés, no soy hablante nativo.

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

Me sale un error como

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 –

Consulta

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

preguntado el 12 de junio de 12 a las 21:06

¿Qué error obtienes? -

Cuando cometas este error siempre dispara CAMBIAR EL NOMBRE DE LA TABLA tbl_name TO new_tbl_name comando y dar el nombre adecuado a la tabla :) -

Recibí este error 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 -

Puede intentar agregar el prefijo from con el nombre de la base de datos (entonces no es necesario usar acentos graves). FROM dbname.show -

No puedo cambiar el nombre de la tabla, porque es un proyecto en ejecución y tendré que cambiarle el nombre y encontrarlo en el código. -

3 Respuestas

Sección 9.3 del Manual de referencia de MySQL 5.1 dice back ticks (`) o comillas dobles ("), sin embargo, iría con el comentario anterior de Fahim Parkar y simplemente cambiaría el nombre de la tabla.

También vale la pena señalar que debe usar el modo ANSI_QUOTES SQL si usa comillas dobles por Sección 9.2:

Si el modo ANSI_QUOTES SQL está habilitado, también se permite citar identificadores entre comillas dobles

Respondido el 12 de junio de 12 a las 22:06

Finalmente tengo una consulta de trabajo. No sé por qué las otras soluciones no funcionaban. Pero esto funciona: serialtracker.`show` - zdarsky.peter

El problema es con AÑO no con SHOW. AÑO es una función de MySQL. La mejor práctica es citar los nombres de las columnas y las tablas todo el tiempo, lo que también facilita la lectura.

Debería ser:

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

respondido 15 nov., 12:07

MySQL no restringe el uso de nombres de funciones en alias. Solo palabras clave reservadas están restringidas en alias. Ver dev.mysql.com/doc/refman/8.0/en/keywords.html (Solo el (R) unos). (tampoco restringido en 5.5, 5.6 y 5.7) - SOFe

Los backticks deberían funcionar bien

intente poner una coma después de SQL_CALC_FOUND_ROWS,

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

Respondido el 12 de junio de 12 a las 22:06

Sé que debería Pero no se que estoy haciendo mal. $sQuery = " SELECT SQL_CALC_FOUND_ROWS year, nameShow FROM mostrar` $sDónde $sOrden $sLimit ";` - zdarsky.peter

@zdarsky.peter: ¿Podría publicar su consulta en su pregunta? En la consulta anterior, ¿qué es $s después? show?? Creo que ese es tu problema - Fahim Parkar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.