【问题标题】:mysql/mysql.h c++ errormysql/mysql.h C++ 错误
【发布时间】:2012-07-01 01:45:00
【问题描述】:

这是我用于 mysql 插入的 c++ 代码片段。我找到了一个如何使用 mysql.h 的示例。程序运行良好,直到我为 mysql 添加以下内容。我是 C++ 新手,在其他代码中找到了相同的示例,只是无法指出问题我添加了 mysql/mysql.h 而不仅仅是 mysql.h 以及 -i 和 -l 以按照建议进行编译在网上,仍然没有运气。任何帮助将不胜感激。

#include    <mysql/mysql.h>


string unknown = "Unknown"

MYSQL *conn;

conn = mysql_init(NULL);
mysql_real_connect(conn, "localhost", "root", "password", "alert", 0, NULL, 0);

mysql_query(conn, "INSERT INTO alert_tbl (alert_srcip, alert_country, alert_destip, alert_desthost, alert_destport, alert_bl) VALUES ('%s','%s','%s','%s','%s','%s')", src_ip,country_code,dest_ip,unknown,dest_prt,blip);

mysql_close(conn);

g++ test.c -o test -lstdc++ -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient

test.c: 错误:预期,或; MYSQL之前

test.c: 错误:conn 未在此范围内声明

test.c: 错误:conn 未在此范围内声明

【问题讨论】:

    标签: c++ mysql linux


    【解决方案1】:

    缺少分号:

    string unknown = "Unknown";
    

    mysql_query的调用参数过多;它不是“printf”风格的函数。您可以冒sql injection attack 的风险将 sprintf 用于单独的缓冲区。你应该使用parameterized queries

    【讨论】:

    • 我觉得自己很愚蠢,谢谢。我感觉就像办公空间的小数事件。谢谢。
    • mysql_query 只需要两个参数。如果您打算像这样传递完整的字符串,则需要先使用 sprintf 然后传递结果字符串。但是,这会导致 SQL 注入攻击的可能性。您应该使用参数化查询。
    猜你喜欢
    • 2012-11-11
    • 2014-07-26
    • 1970-01-01
    • 2012-05-03
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2011-05-16
    相关资源
    最近更新 更多