Requête SQL dynamique : définir le nom de la table
Dans les requêtes SQL dynamiques, vous pouvez utiliser certaines méthodes pour fournir dynamiquement des paramètres et définir le nom de la table. Même si vous avez réussi à définir un paramètre, vous avez maintenant besoin de conseils sur la façon de définir le nom de la table de manière dynamique.
Définir dynamiquement le nom de la table
Pour éviter les vulnérabilités d'injection SQL, il est recommandé d'utiliser des fonctions autant que possible. Dans ce cas, vous pouvez combiner plusieurs techniques pour définir le nom de la table de manière dynamique :
<code class="language-sql">SET @TableName = '<[db].><[schema].>tblEmployees' SET @TableID = OBJECT_ID(@TableName) --如果格式错误/注入,则无法解析。 SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID'</code>
Ce script initialise le nom de la table en tant que paramètre, puis récupère l'ID de l'objet sous-jacent pour garantir que le nom fourni est valide. Si le nom de la table fourni est mal formé ou a été injecté en tant que vulnérabilité SQL, l'ID de l'objet ne sera pas résolu.
Enfin, faites une référence au nom de la table pour éviter d'éventuelles attaques par injection SQL et complétez la requête SQL dynamique en ajoutant le paramètre d'ID d'employé fourni.
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!