转义FMDB iOS查询

时间:2015-10-15 16:00:36

标签: ios sql sqlite special-characters fmdb

我用FMDB中的参数写了一个查询?标记符号。我想获得列表中包含任何信息的用户的详细信息(希望我可以在sql的“in”语句中用逗号分隔不同的信息)。由于我的参数有特殊符号,因此抛出错误。如何逃避那里的特殊符号。我尝试了不同的方法但还没有工作

我的代码就像:

FMResultSet *results = [db executeQuery:@"select details from user where info in(?)",infoList];
while([results next])
    {...}

Info是由逗号分隔的不同字符串组合而成的字符串。例如:

  'C-note','古巴导弹危机','小熊洞','我爱露西','我是名人......让我离开这里!','Iacocca,Lee', '-iana','常春藤盟','

提前致谢

1 个答案:

答案 0 :(得分:4)

除非您只绑定单个值,否则不能将?in子句一起使用。它不适用于值列表。

由于infoList是一个字符串值数组,因此一个选项是为列表中的每个值添加?

NSMutableString *query = [NSMutableString stringWithString:@"select details from user where info in ("];
for (NSInteger i = 0; i < infoList.count; i++) {
    if (i) {
        [query appendString:@","];
    }
    [query appendString:@"?"];
}
[query appendString:@")"];
FMResultSet *results = [db executeQuery:query withArgumentsInArray:infoList];