Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-使用SQLite3:I';我试图将用户输入的文本(可以是任何字符)放入sql表中。如何安全地进行?_Iphone_Objective C_Sqlite - Fatal编程技术网

iPhone-使用SQLite3:I';我试图将用户输入的文本(可以是任何字符)放入sql表中。如何安全地进行?

iPhone-使用SQLite3:I';我试图将用户输入的文本(可以是任何字符)放入sql表中。如何安全地进行?,iphone,objective-c,sqlite,Iphone,Objective C,Sqlite,我知道如何在objective c中将文本放入sqlite3表中。我就是这样做的: NSString *sql = [NSString stringWithFormat: @"INSERT OR REPLACE INTO myTable (name, response) VALUES ('%@','%@');", name, response]; char *err; if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) !=

我知道如何在objective c中将文本放入sqlite3表中。我就是这样做的:

NSString *sql = [NSString stringWithFormat: @"INSERT OR REPLACE INTO myTable (name, response) VALUES ('%@','%@');", name, response];

char *err;
if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK)
{
    sqlite3_close(db);
}
我最担心的是,由于我放入表格的文本直接来自用户,它可能包含任何字符,包括撇号之类的东西,在放入表格之前需要进行转义

我有两个主要问题:

  • 除了撇号,我还需要为用户可能输入的sql文本转义哪些其他字符
  • 在将NSString放入sql表之前,将其更改为在需要转义的字符之前放入转义的最佳方法是什么?我应该使用扫描器逐个字符地解析字符串,搜索应该转义的字符吗

  • 谢谢

    您应该使用内置的
    功能。您需要创建准备好的语句,然后使用

    “在myTable(名称、响应)中插入或替换值(?,);”


    我还建议您调查一下。

    您考虑过使用核心数据吗?它应该自动处理这些事情。

    谢谢。我试过装订,但还是不起作用。我不想使用FMDB,因为我已经用sqlite3编写了很多代码。还有其他想法吗?