J'ai un petit problème avec le nom de la table qui s'échappe. J'étais tellement stupide que je choisis "montrer" pour le nom de la table. Lorsque j'utilise la connexion MySQLI, l'échappement fonctionne bien, mais elle ne fonctionne pas avec la connexion MySQL classique. Avez-vous des conseils?
Désolé pour mon anglais, je ne suis pas un haut-parleur natif. I Obtenir une erreur comme P> $sQuery = "
SELECT SQL_CALC_FOUND_ROWS year, nameShow
FROM `show`
$sWhere
$sOrder
$sLimit
";
3 Réponses :
Section 9.3 du manuel de référence MySQL 5.1 dit Back Ticks (`) ou Double citations (") J'irais avec le commentaire de Fahim Parkar ci-dessus et je viens de renommer la table. P>
Vaut également à noter, vous devez utiliser le mode ANSI_QUOOTES SQL si vous utilisez des guillemets doubles par Section 9.2 : P>
Si le mode ANSI_Quotes SQL est activé, il est également permis de Identificateurs de devis dans des guillemets doubles p> blockQuote>
Enfin j'ai une requête de travail. Je ne sais pas pourquoi les autres solutions ne travaillent pas. Mais cela fonctionne: sériialtracker.`show` code>
Les backtsticks doivent fonctionner correctement
Essayez de mettre une virgule après SQL_CALC_Found_Rows, P>
SELECT SQL_CALC_FOUND_ROWS, year, nameShow FROM `show` LIMIT 0, 10
Je sais que ça devrait. Mais je ne sais pas ce que je fais mal. $ SCRAY = "Sélectionnez SQL_CALC_Found_Rows année, Namehow à partir de CODE> Afficher` $ SWHERE $ SORDER $ SLIGIT";
@ zdarsky.peter: Pourriez-vous poster votre requête dans votre question ?? Dans la requête ci-dessus Qu'est-ce que $ s après montre code> ?? Je pense que c'est ton problème
Le problème est avec l'année non pas avec le spectacle. Année est une fonction mysql. La meilleure pratique consiste à citer les noms de colonne et de tableaux tout le temps, rend les choses faciles à lire également.
devrait être: p>
MySQL ne limite pas les noms de fonction d'être utilisés dans des alias. Seuls Les mots-clés réservés i> sont restreints dans des alias. Voir dev.mysql.com/doc/refman/8.0/fr/kewords .html (uniquement le (r) code>). (Également non limité dans 5,5, 5.6 et 5.7)
Quelle erreur obtenez-vous?
Lorsque vous faites cette erreur, incendiez toujours Renommer Table TBL_NAME TO NEW_TBL_NAME une commande> et donner un nom propre à la table :)
J'ai eu cette erreur
que vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version de Server MySQL pour la bonne syntaxe à utiliser à proximité 'show' à la ligne 2 code>
Vous pouvez essayer de préfixer le nom de la base de données (pas besoin de backticks alors).
de dbname.show code>
Je ne peux pas renommer la table, parce que son projet d'exécution et je devrai renommer et le trouver dans le code.
J'ai essayé le préfixe avant que je pose le problème ici. C'est toujours pas wokring.
Sélectionnez SQL_CALC_Found_Rows année, Namehow de SerialTracker.Show Commande par année ASC Limite 0, 10 Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version de Server MySQL pour la bonne syntaxe à utiliser à proximité 'show' à la ligne 2 code>
Essayez avec
sériialtracker.`show` code>
Quelles données seront là pour
$ SWHERE code> ??
Quand j'ai dirigé votre requête, je n'ai pas rencontré de problème dans mon SQL 5.5 voir ici A >
Son filtrage individuel, mais dans ce cas, c'est vide. J'utilise des datables lien . Le code est de l'exemple au bas de la page.
Je n'ai pas de problème avec la requête lorsque je copie le SQL imprimé du navigateur et l'exécuter avec phpmyadmin.
Enfin j'ai une requête de travail. Je ne sais pas pourquoi les autres solutions ne travaillent pas. Mais cela fonctionne:
sériialtracker.`show` code>
FWIW ans plus tard, peut-être aucune base de données n'avait été définie. Par exemple.
Utilisez sérialatracker; code> avant votre requête. C'est-à-dire que le message d'erreur peut être trompeur dans cette circonstance.