2017-08-02 94 views
0

我花3个小时搞清楚什么是我在这段代码的问题和原因的mysql_query不工作... 这是我的查询:mysql的C API的MySQL查询功能不到风度工作

`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; 
} 

当我运行我的程序,我可以在我的表看到添加有phpmysqladni一些数据n
但这部分执行在我的终端:PTRACE(0,0, "mysql_query can't run");
帮帮我!

+1

如果'mysql_query'功能失效,那么也许你应该检查这个错误吗?请尝试创建一个[最小,完整和可验证的示例](http://stackoverflow.com/help/mcve)并向我们显示。 –

+0

mysql_error()只是返回一个空行!对我来说这太奇怪了...... – Iman

回答

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"); 
} 
+1

谢谢@地理学家!它修复了:D – Iman