2017-08-02 57 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