sqlite
C APIを介してObjective-Cで使用しています。私のアプリの目的の機能の 1 つは、ユーザーが人の名前を検索し、新しい文字を入力するたびに SQL クエリをLIKE
実行して、名前が一致するすべての人を検索できるようにすることです。私が直面している問題は、疑問符が文字通り解釈されることなく、LIKE 内で一致をパラメーター化することです。つまり、現在のアプリは、名前に含まれている人の名前を探していると思い?
ます (これは無名です)。
私のコードは次のようになります。
const char *sql = "SELECT rowid, name, email FROM person WHERE name LIKE '%?%'";
sqlite3_stmt *sqlStatement;
if(sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
NSLog(@"Problem preparing getFilteredPeopleStubs statement.");
}
if(sqlite3_bind_text(sqlStatement, 1, [searchText UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK){
NSLog(@"Problem binding search text param.");
}
基本的に、searchText
私は名前の由来を望ん?
でいますが、現時点では、単一引用符のため、名前に が含まれている人を検索しているだけだと思います'%?%'
。パラメータ化されたクエリ (SQL インジェクションに対する保護) を使用して、目的を達成できるこの問題の解決策はありますか?