我花了3个小时来弄清楚这个代码中我的问题是什么,以及为什么mysql_query不起作用...... 这是我的疑问:
`sprintf(quer, "INSERT INTO `tblRobotProcessQueue`(ProcessId,Protocol,SRC_IP,DST_IP,SRC_Port,DST_Port,`HostName`,`URL`,`Href`,DateAdd) VALUES(%d,%d,%d,%d,%d,%d,%s,%s,%s,%d )" ,pid*i, 6, 1234, 5345, 80, 44, "HostName", "URL", "Href", currentTime);`
这是我的自定义db_query:
int _db_query(MYSQL *mysql_conn, char* sql ) {
int ret = 0;
if ( 0 == ( ret = mysql_ping( mysql_conn ) ) ) {
if(!mysql_query( mysql_conn , sql )){
PTRACE(0,0, "mysql_query can't run");
}
printf("ret is : %d\n", ret);
//syslog ( LOG_INFO , "db_query( %u , [%s] )" , connection_id , sql );
if ( 0 != ret && NULL != mysql_error( mysql_conn ) ) {
syslog ( LOG_INFO , "Mysql query connection %s", mysql_error( mysql_conn ) );
PTRACE(0,0, "FAIL HERE IN _DB_QUERY");
}
} else {
PTRACE( 0 , 0 , "Mysql Ping Error connection %s" ,mysql_error( mysql_conn ) );
}
PTRACE(0,0, "reach to end of _db_query...\n");
return ret;
}
当我运行我的程序时,我可以看到我的表中添加了phpmysqladnin的一些数据
但这部分在我的终端执行:PTRACE(0,0, "mysql_query can't run");
帮帮我们!
答案 0 :(得分:0)
if(!mysql_query( mysql_conn , sql )){
PTRACE(0,0, "mysql_query can't run");
}
这部分是问题所在。 mysql_query
成功时返回0
,失败时返回严格负值。因此,当函数实际成功时,您的条件会输出错误消息。确实if (!functionCall())
实际上与if (functionCall() == 0)
相同。
你也应该改变它:
if(mysql_query( mysql_conn , sql ) < 0){
PTRACE(0,0, "mysql_query can't run");
}