SQL クエリでテーブル名を動的に設定する
この記事では、特にパラメーター値を使用する場合に、SQL クエリでテーブル名を安全かつ動的に設定する方法について説明します。動的パラメータ値は正常に実装されましたが、動的テーブル名には別の課題が生じます。
OBJECT_ID 関数と QUOTENAME 関数を使用したメソッド
SQL インジェクションを防止し、クエリの整合性を確保するには、文字列を直接連結する代わりに関数を使用することをお勧めします。効率的な方法は、OBJECT_ID 関数と QUOTENAME 関数を使用することです:
<code class="language-sql">DECLARE @TableName NVARCHAR(255); SET @TableName = '<[数据库名称].><[模式名称].>[表名称]'; -- 检查表是否存在以防止注入 DECLARE @TableID INT; SET @TableID = OBJECT_ID(@TableName); IF @TableID IS NULL RETURN '未找到表'; -- 使用QUOTENAME构建查询字符串以转义特殊字符 SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID';</code>
このアプローチにより、テーブル名が正しくエスケープされ、潜在的に悪意のある入力が防止されます。 QUOTENAME 関数は、テーブル名の特殊文字または予約語を角括弧で囲み、潜在的な SQL インジェクション攻撃を防ぎます。
以上がSQL クエリでテーブル名を安全に動的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。