Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser d'instructions préparées pour les noms de tables dans ma requête SQL ?

Pourquoi ne puis-je pas utiliser d'instructions préparées pour les noms de tables dans ma requête SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-19 13:41:49363parcourir

Why Can't I Use Prepared Statements for Table Names in My SQL Query?

Dépannage des instructions préparées pour la saisie du nom de table

Lors d'une tentative d'utilisation d'instructions préparées pour définir un nom de table pour la sélection de données, une erreur persiste lors de l'exécution de la requête. L'exemple de code fourni présente le problème :

[Microsoft][ODBC Microsoft Access Driver] Parameter 'Pa_RaM000' specified where a table name is required.

...

private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [?]"; //?=date

Le coupable dans ce scénario est l'incapacité de remplacer un nom de table par un paramètre. Les déclarations préparées ne conviennent pas à cette fin ; le nom de la table doit être codé en dur dans la requête. Pour résoudre le problème, envisagez l'approche suivante :

private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]";

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn