Relevés préparés et noms de tables : un piège courant
L'utilisation d'instructions préparées pour spécifier dynamiquement des noms de table entraîne souvent des erreurs telles que "Paramètre 'Pa_RaM000' spécifié là où un nom de table est requis." Cette erreur met en évidence une limitation cruciale : les paramètres d'instructions préparées ne peuvent pas remplacer les noms de tables directement dans les requêtes SQL.
La solution consiste à construire la chaîne de requête SQL en concaténant le nom de la table (qui doit être codé en dur) avec toutes les valeurs paramétrées. Considérez cet exemple corrigé :
<code class="language-sql">private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]"; </code>
Ici, reportDate
(un paramètre) est concaténé avec un préfixe de nom de table fixe. Cela garantit que la requête identifie correctement la table cible. N'oubliez pas que le remplacement direct des noms de table par des paramètres n'est pas pris en charge par les systèmes de bases de données utilisant des instructions préparées.
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!