0

これは、mysql挿入用の私のc++コードの抜粋です。mysql.hでそれを行う方法の例を見つけました。mysqlに以下を追加するまで、プログラムは正常に実行されます。私はc++を初めて使用し、他のコードでも同じ例を見つけました。mysql.hだけでなくmysql / 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はこのスコープで宣言されていません

4

1 に答える 1

2

セミコロンがありません:

string unknown = "Unknown";

への呼び出しmysql_queryのパラメーターが多すぎます。「printf」スタイルの関数ではありません。sprintf を別のバッファに使用すると、SQL インジェクション攻撃のリスクがあります。パラメータ化されたクエリを使用する必要があります。

于 2012-06-29T14:05:55.687 に答える