2013-02-09 41 views
0
$insert = mysql_query(" 
    INSERT into analytics.pagesummary (Date, avg_load_time, min_load_time, max_load_time) 
    VALUES ($date,$string_avg, $string_min,$string_max)") 
    or die('PROBLEM'.mysql_error()); 

實際日期值= '2013-02-07', '2013-02-08', '2013-02-09' 日期值=正被顯示的avg_load_time'2004', '2003', '2002'MySQL的查詢被觸發後插入不同的值在數據庫

其他值,min_load_time & max_load_time是正確的。

我們去哪裏錯了。任何幫助,將不勝感激。

+0

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – j0k 2013-02-09 08:18:09

回答

1

因爲值不是一個單引號包裹和MySQL隱式轉換值默默地,它應該是

INSERT INTO analytics.pagesummary (Date, avg_load_time, min_load_time, max_load_time) 
VALUES ('$date', '$string_avg', '$string_min', '$string_max') 

爲什麼插入時2013-02-07變得2004是因爲它執行arithmethic操作的原因,使得

2013 - 02 = 2011 - 07 = 2004 
2013 - 02 = 2011 - 08 = 2003 
2013 - 02 = 2011 - 09 = 2002 

一點題外話,查詢與SQL Injection脆弱的,如果變量的值(小號)從外面走了進來。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

相關問題