2010-04-27 39 views
3

我正在使用php來查詢mysql。這裏是一個:在MySQL中調用NOW()函數

UPDATE `subscribers` SET `curDate` = NOW() WHERE `e_mail` = "$resEmail" 

curDate - DateTime類型。問題是,在這個查詢後,給定電子郵件的curDate是

0000-00-00 00:00:00 

怎麼了?

+1

顯示您的「CREATE TABLE」語句,以便我們可以看到數據類型。此外,使用保留字命名字段是非常糟糕的做法(如curDate-記住sql不區分大小寫), – dnagirl 2010-04-27 19:26:51

+0

如果執行:select NOW();你從MySql得到什麼? – AlG 2010-04-27 19:27:14

+0

@ qor72 2010-04-28 02:26:45 – Ockonal 2010-04-27 19:28:33

回答

5

你的PHP可能看起來像現在這樣:

$sql = 'UPDATE `subscribers` SET `curDate` = NOW() WHERE `e_mail` = "$resEmail"'; 

單引號阻止代入字符串變量的值。您需要將其更改爲:

$sql = "UPDATE `subscribers` SET `curDate` = NOW() WHERE `e_mail` = '$resEmail'"; 

您還應該意識到,您可能在此處有SQL注入漏洞。考慮使用mysql_real_escape_string來轉義電子郵件地址。

$sql = "UPDATE `subscribers` SET `curDate` = NOW() WHERE `e_mail` = '" . 
     mysql_real_escape_string($resEmail) . "'"; 
+0

我可以在單引號中插入php變量嗎? – Ockonal 2010-04-27 19:26:01

+0

@Ockonal:如果整個字符串都是雙引號,那麼該字符串中的單引號不會阻止解釋php變量。 – 2010-04-27 19:27:20

+1

「在MySQL中,字符串必須被單引號包圍,而不是雙引號」。 - 只有在設置了服務器模式「ANSI_QUOTES」時才爲true,請參閱http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html – VolkerK 2010-04-27 19:29:10

0

由於您使用的是基於正確的時間戳TIMEDATE功能,嘗試用Timestamp(Now())設置它。