2017-07-31 69 views
0

我有我的C以下的MySQL插入查詢++代碼:如何在C++中使用MySQL的STR_TO_DATE?

snprintf(buffer, QUERY_MAX, 
    "INSERT INTO players (FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, MONEY, \ 
    USERNAME, PASSWORD, GENDER, INCOME_LEVEL, CRIME_LEVEL, DOB) \ 
    VALUES (\'%s\', \'%s\', \'%s\', \'%s\', %f, \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \ 
    STR_TO_DATE(\'%s\', '%m/%d/%Y')    \ 
);", /* values */, "10/15/2017"); 

我得到以下警告:

警告C4476:格式 未知類型欄中的 'M': '的snprintf'符

警告C4473: '的snprintf':沒有足夠的參數傳遞的格式字符串

它似乎不喜歡我的格式說明符STR_TO_DATE。這似乎是MySQL格式說明符與C++的混淆。我怎樣才能解決這個問題?

我的日期變量被傳遞給%s是我自己的格式'10/15/2017'。

在緩衝區,它在調試如下:

STR_TO_DATE('10/15/2017', 'm/-858993460/Y') 

回答

0

您不能混用C和MySQL的格式。用C格式說明,並通過參數字符串值:

STR_TO_DATE(\'%s\', '%s/%s/%s') 

而且,你這樣做不對,因爲這是SQL注入容易代碼。改爲使用帶有參數的預準備語句

0

使用%%來逃避格式字符串的MySQL部分中的百分比。

STR_TO_DATE(\'%s\', '%%m/%%d/%%Y')