sql >> データベース >  >> RDS >> Mysql

実行時にテーブル名を動的に選択するための最良の方法は何ですか?

    識別子 をパラメータ化することはできません。 (テーブル名またはフィールド名)MySQLでは、ただし、バッククォートを使用してそれらをエスケープできます。

    次のクエリは安全に実行されますが、テーブルが存在しないためエラーが発生します(奇妙な可能性がある場合を除いて、実際にこのような名前のテーブルがあります):

    SELECT * FROM `users; DROP TABLE users;`;
    

    基本的に、動的な名前またはフィールドは、バッククォートで囲まれている限り使用できます。この方法でSQLインジェクションを防ぐには、最初にバッククォートを取り除くだけです。

    tableName = tableName.Replace("`", "");
    string commandText = "SELECT COUNT(*) FROM `" + tableName + "`";
    


    1. MySQLはN行の移動平均を計算します

    2. Entity Framework 7データベース-最初のPOCOジェネレーターはありますか?

    3. CakephpApiのMySqlクエリ

    4. 非常に小さなMySQLテーブルはインデックスを無視しますか?