10

このクエリは、Dapperと組み合わせたSQLインジェクションに対して安全ですか?そうでない場合、MySqlの下でそれを書く正しい方法は何でしょうか?または、concatを使用しないより良いバージョンはありますか?

string sql = "SELECT * from user_profile WHERE FirstName LIKE CONCAT("%",@name,"%");"
var result = connection.query<profile>(sql, new {name});
4

2 に答える 2

17

そのコードには問題はありませんが、別のアプローチは、呼び出し元で連結を実行することです。

const string sql = "SELECT * from user_profile WHERE FirstName LIKE @name;";
var result = connection.Query<Profile>(sql, new {name = "%"+name+"%"});
于 2012-05-12T11:25:31.123 に答える
6

SQLを動的に構築していないため、これは安全です。名前は単なる通常のパラメータです。実際、それはDapperとは何の関係もありません。

ここで文字列連結を使用するのが正しい選択です。または、この関数を使用することもできますSUBSTRING_INDEX

于 2012-05-12T11:07:19.687 に答える