gpt4 book ai didi

c++ - 使 MySQL 文字在 C++ 中安全

转载 作者:行者123 更新时间:2023-11-28 04:45:12 27 4
gpt4 key购买 nike

在我的 C++ 代码中,我获得了有关必须插入数据库的数据的事件。

事件产生不同的线程,我有一个用于生产者消费者模型的 BlockingConcurrentQueue。每个线程在队列中写入(产生)类似的内容:

INSERT INTO CHAT_COMMENTS (chat_comment_id, comment) values (3,'This is a comment';

上面的字符串生成为

sprintf(insert_statement, "INSERT INTO CHAT_COMMENTS (chat_comment_id, comment) values (%d,'%s')",e->id,e->comment);

调度程序每隔一段时间运行一次,并在 MySQL 数据库中执行所有这些插入语句。现在,问题是评论可能有一些 MySQL 特殊字符,如下所示:

cout << comment; // produces "this_% LIKE 'a comment """\m/'DROP TABLE USERS"

INSERT INTO CHAT_COMMENTS (chat_comment_id, comment) values (3,'this_% LIKE 'a comment """\m/'DROP TABLE USERS');

有没有办法处理这些情况?

我知道可以使用准备好的语句,但我正在寻找不同的东西,因为 PreparedStatements 不是线程安全的,而且我想批量执行上面的查询。

最佳答案

您可能正在寻找 mysql_real_escape_string()功能。

关于c++ - 使 MySQL 文字在 C++ 中安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49381825/

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