我無法在我的 c 輸入中輸入 01,它會回傳空結果,但是當我輸入其他日期(例如 12 和 11)時,它確實會顯示在系統中。
string month;
cin.ignore(1, '\n');
cout << "Please Enter Month For Example 01 for January:";
getline(cin, month);
string search_query = "SELECT DATE(OrderDate), SUM(TotalPrice) FROM order1 WHERE MONTH(OrderDate) like '%" month "%' GROUP BY DATE(OrderDate)";
const char* q = search_query.c_str();
qstate = mysql_query(conn, q);
資料庫
如果我輸入“01”,就會發生這種情況
這就是我輸入“11”時發生的情況
這是當我輸入“12”時它成功顯示
uj5u.com熱心網友回復:
問題是您LIKE在 MySQL中使用運算子,它檢查右側指定的模式是否出現在左側指定的字串中。模式“01”可能不會出現在左側的值中,因為對于一月份的訂單,左側的字串應該是“1”,并且其中沒有“0”。
我還想象,如果您輸入“1”,您實際上會看到 1 月、10 月、11 月和 12 月的所有訂單,因為所有這些月份都有“1”。
嘗試使用類似的東西MONTH(OrderDate) = 1。
更明確地說:嘗試更改程式中定義search_query為此的行:
std::string search_query = "SELECT DATE(OrderDate), SUM(TotalPrice) FROM order1 WHERE MONTH(OrderDate) = " month " GROUP BY DATE(OrderDate)";
順便說一句,對于更健壯的程式,您還應該確保在將用戶提供的月份數字添加到查詢字串之前將其轉換為整數;現在你讓用戶在你的查詢中插入任意字串,這可能很危險。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/406054.html
標籤:
下一篇:通過從資料庫中讀取資料來使用回圈
