gpt4 book ai didi

c++ - 我应该使用 SQLite3 bind_int 函数吗?

转载 作者:行者123 更新时间:2023-11-30 03:42:32 26 4
gpt4 key购买 nike

有什么理由我应该使用 sqlite3_bind_int() 函数吗?在 Prepare 函数执行之前传递整数变量是否可以?

示例 A(伪代码):

// prepare statement
sstream s;
s << "insert into TABLE values(" << 1 << "," << 2 << ",?)";
//...
const char *sql = ... // sql is equal to "insert into TABLE values(1, 2, ?)";
Prepare(..., sql, ...);
sqlite3_bind_text(3, "text")

示例 B(伪代码):

const char *sql = "insert into TABLE values(?, ?, ?)";
Prepare(..., sql, ...);
sqlite3_bind_int(1, 1);
sqlite3_bind_int(2, 2);
sqlite3_bind_text(3, "text")

我知道文本变量可以包含 SQL 注入(inject)字符串,所以我应该使用 bind_text 函数,而不是整数?

最佳答案

绑定(bind)参数可以避免格式问题或 SQL 注入(inject)攻击。

然而,这对于普通整数来说都不是问题。所以你真的不需要使用sqlite3_bind_int,如果其他代码对你来说更容易的话。

另一方面,您肯定希望对 float/text/blob 值使用绑定(bind),因此避免 sqlite3_bind_int 很可能只会使代码不一致。

关于c++ - 我应该使用 SQLite3 bind_int 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36753595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com