2011-10-02 17 views
3

可能重複:
Preventing SQL Injection in C如何清理C語言中的SQL查詢?

我知道PHP有內建的,有助於淨化查詢功能,但c具有這樣的事情?

snprintf(&buff[0],1023,"UPDATE grades SET grade='%c' WHERE username='%s'",choice,&uname[0]); 

if (mysql_query(connect,&buff[0]) != 0) { 
    // If it failed, tell the user 
    printf("Error: %s!\n", mysql_error(connect)); 
    return; 
} 
+2

我幾乎可以肯定有一些API支持預處理語句。 – cHao

+1

正如@cHao所說,避免輸入「消毒」,並使用預處理語句,C API [支持它們](http://dev.mysql.com/doc/refman/5.0/en/c-api-prepared-statements的.html)。 –

回答

4
+0

通過該函數傳遞查詢後,我得到...「更新成績SET等級= \'A \'其中用戶名= \'學生\'」這導致語法錯誤,當我嘗試執行它與mysql_query。 – Takkun

+0

我不會推薦使用這種手動轉義字符串的方法,因爲你忘記調用這一天的那一天是你在代碼中引入安全問題的那一天。始終使用帶有綁定參數的準備語句。 –

1

C語言和運行時沒有這樣的例程。你的特定數據庫的特定客戶端庫可能有一些東西。