我真的很感謝你對我最後一個問題的幫助。這是相關的,但我不想隱藏這個問題在其他..我有一個問題,使用「DATE_ADD(NOW(),INTERVAL $ interval)」在佔位符內。在我使用佔位符之前,這條線工作得很好,而不是空白。mysql placeholder not for DATE_ADD(perl)
$store = qq(INSERT INTO main (creator_name,relationship,time) VALUES(?,?,?));
my $sth = $dbh->prepare($store);
$sth->execute($data{creatorname},$data{relationship}, "DATE_ADD(NOW(), INTERVAL $interval)");
是否有另一種方法添加DATE_NOW,因此它是synatically正確的?我試圖重新添加回來像
$store = qq(INSERT INTO main (creator_name,relationship,time) VALUES(?,?, DATE_ADD(NOW(), INTERVAL $interval)));
它錯誤地說,語法是錯誤的。至少在執行頂部的代碼時,只會將值留空。有了這個嘗試,它甚至不會嘗試。
什麼是$間隔? – woolstar
很難在不知道更多關於設置的情況下測試修補程序,但乍看之下,它看起來像是混合了SQL語法和佔位符值。象'DATE_ADD'或'NOW'這樣的標記是SQL表達式,而不是變量。每個'''佔位符都是一個標量變量的替代品。例如,'DATE_ADD(NOW(),INTERVAL $ interval)'可以變成'DATE_ADD(NOW(),INTERVAL?)',''interval'傳遞給'execute'。過去,我在MySQL日期函數上很生疏,但是你需要[在那個時間間隔上指定單位](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions的.html#function_date添加)? – rutter
@rutter,'DATE_ADD(NOW(),INTERVAL?)'不會工作,因爲語法是'DATE_ADD(NOW(),INTERVAL {expr} {unit})''。你可以做'DATE_ADD(NOW(),INTERVAL?WEEK)'而不是'DATE_ADD(NOW(),INTERVAL?)'或'DATE_ADD(NOW(),INTERVAL??)' – ikegami