こんにちは、皆さん、メリークリスマス!
sqlite と fmdb をラッパーとして使用して iOS アプリを構築しています。次のSQL文を実行しようとしています:
SELECT * FROM TABLE WHERE FIELD LIKE '%text%'
UISearchBar からのテキストを使用します。
これまでのところ、私がそれを機能させる唯一の方法は、次のコードを使用することでした:
NSString *query = [NSString stringWithFormat:@"SELECT * FROM TABLE WHERE FIELD LIKE '%%%@%%'", text];
FMResultSet *results = [db executeQuery:query];
クエリコードのみを投稿していることに注意してください。それはうまくいきます。
私が欲しいのは、SQLインジェクションを避けることなので、次のようなことを試しています:
NSString *query = @"SELECT * FROM TABLE WHERE FIELD LIKE %%?%%";
FMResultSet *results = [db executeQuery:query, text];
または次のようなもの:
NSString *query = @"SELECT * FROM TABLE WHERE FIELD LIKE ?";
FMResultSet *results = [db executeQuery:query, [NSString stringWithFormat:@"%%%@%%", text]];
動作しません。like 句 ('%%?%%') を一重引用符で囲んだり、二重ではなく単一の % を使用した場合も同様です。
この問題について説明してもらえますか? どんな助けでも大歓迎です!
あけましておめでとう!