Sqlite SQL格式化输入函数splite3_mprintf

Sqlite SQL格式化输入函数splite3_mprintf,第1张

概述sqlite中, 在使用sql语句写入字符串数据时, 由于字符数据中可能隐含转义字符, 如果对于他们不作处理,执行时,exec函数将不识别,或者造成注入攻击 这个时候sqlite_mprintf(), 应该就是必须使用了,配合‘%q’将字符数据中的转义字符,直接转换, 就不用担心字符串中含有‘单引号,这样造成sql语句不识别的问题。 For example, assume the string v sqlite中, 在使用SQL语句写入字符串数据时, 由于字符数据中可能隐含转义字符, 如果对于他们不作处理,执行时,exec函数将不识别,或者造成注入攻击 这个时候sqlite_mprintf(), 应该就是必须使用了,配合‘%q’将字符数据中的转义字符,直接转换, 就不用担心字符串中含有‘单引号,这样造成SQL语句不识别的问题。

For example,assume the string variable zText contains text as follows:

char *zText = "It's a happy day!";

One can use this text in an sql statement as follows:

char *zsql = sqlite3_mprintf("INSERT INTO table VALUES('%q')",zText);sqlite3_exec(db,zsql,0);sqlite3_free(zsql);

Because the %q format string is used,the '\'' character in zText is escaped and the sql generated is as follows:

INSERT INTO table1 VALUES('It''s a happy day!')

This is correct. Had we used %s instead of %q,the generated sql would have looked like this:

INSERT INTO table1 VALUES('It's a happy day!')
总结

以上是内存溢出为你收集整理的Sqlite SQL格式化输入函数splite3_mprintf全部内容,希望文章能够帮你解决Sqlite SQL格式化输入函数splite3_mprintf所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1171206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存