【问题标题】:Escape special characters in FMDB iOS query在 FMDB iOS 查询中转义特殊字符
【发布时间】:2016-01-14 04:35:05
【问题描述】:

我在 FMDB 中使用参数编写了一个查询?标记符号。我想获取列表中包含任何信息的用户的详细信息(希望我可以在 sql 中的“in”语句中提供用逗号分隔的不同信息)。由于我的论点具有特殊符号,因此会引发错误。如何逃脱那里的特殊符号。我尝试了不同的方法,但都没有奏效

我的代码是这样的:

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

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

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

提前致谢

【问题讨论】:

    标签: ios sql sqlite special-characters fmdb


    【解决方案1】:

    您不能将单个?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];
    

    【讨论】:

    • 感谢您的快速回复。这里的问题是 infoList 是动态生成的,我不能说特殊符号可能来自哪里。如果我们可以通过其他方式处理,它也可以在数组中使用。我看到了一些类似 ` [db executeQuery: withArgumentsInArray:] ` 的函数。在这种情况下可以使用吗?
    • 我更新了答案,因为 `infoList` 是一个字符串数组。
    • 我检查了 NSString withformat:] 。它工作正常。我会检查这个并让你知道。抱歉回复晚了。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多