Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
Mysql 在数据库中插入文本如何处理';_Mysql_Sql_Sqlite_Android Sqlite - Fatal编程技术网

Mysql 在数据库中插入文本如何处理';

Mysql 在数据库中插入文本如何处理';,mysql,sql,sqlite,android-sqlite,Mysql,Sql,Sqlite,Android Sqlite,您好,我正在将一般注释动态插入到我的数据库中。我的查询如下所示: String sql = "insert into table (comment) values('"+ dynamic_comment + "');"; 当使用插入类似以下内容时,我遇到一个错误: 我做得很好 因为当时我的查询变成: insert into table (comment) values('I'm doing great'); “我做得很好” 有人能告诉我如何克服这个问题,以及在使用数据库时,我可以面对多少其他

您好,我正在将一般注释动态插入到我的数据库中。我的查询如下所示:

String sql = "insert into table (comment) values('"+ dynamic_comment + "');";
当使用插入类似以下内容时,我遇到一个错误:

我做得很好

因为当时我的查询变成:

insert into table (comment) values('I'm doing great');
“我做得很好”

有人能告诉我如何克服这个问题,以及在使用数据库时,我可以面对多少其他类似的问题吗


谢谢

您需要在插入字符串变量之前对其进行转义

String sql = "insert into table (comment) values('"+ DatabaseUtils.sqlEscapeString(dynamic_comment) + "');";

上述方法容易受到SQL注入攻击。为了安全起见,请了解更多有关使用的信息

与您相同的查询的示例如下:

SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("INSERT INTO `table` (`comment`) values(?)");
stmt.bindString( 1, dynamic_comment );
stmt.execute();

插入前需要转义字符串变量

String sql = "insert into table (comment) values('"+ DatabaseUtils.sqlEscapeString(dynamic_comment) + "');";

上述方法容易受到SQL注入攻击。为了安全起见,请了解更多有关使用的信息

与您相同的查询的示例如下:

SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement stmt = db.compileStatement("INSERT INTO `table` (`comment`) values(?)");
stmt.bindString( 1, dynamic_comment );
stmt.execute();

您需要使用准备好的语句,将原始字符串连接到查询中已经是很长一段时间的错误做法

发件人:


您需要使用准备好的语句,将原始字符串连接到查询中已经是很长一段时间的错误做法

发件人:


你不是第一个遇到这个问题的人。您是否尝试搜索答案?请使用。您不是第一个遇到此问题的人。你尝试过搜索答案吗?使用。始终使用参数化语句,否则你只是在请求SQL注入攻击。嗯,我也不知道sqlite/android中的准备语句。谢谢编辑reply now@pablochandint help,插入abcd并将结果作为'abcd'。始终使用参数化语句,否则您只是在请求SQL注入攻击。嗯,我也不知道sqlite/android中准备好的语句。谢谢正在编辑reply now@pablochandint help,插入abcd并将结果作为'abcd'。为什么在此处放置1:stmt.bindString(1,动态注释);看一看-我正在将第一个参数(
)绑定到
动态注释
的值。为什么在这里放1:stmt.bindString(1,动态注释);看看-我正在将第一个参数(
)绑定到
动态注释的值。