簡體   English   中英

無法弄清mysql datatime

[英]can't figure out mysql datatime

因此,在最愚蠢的情況下,我竭盡全力...我試圖將新的時間保存到MySQL數據庫中,並嘗試了我能想到的一切來實現此目的,但我無法做到這一點原因。 這就是我所擁有的...

$_ = gmdate("Y-m-d H:i:s",time());
if (! mysql_query("UPDATE Accounts 
    SET likes='1',update='".$_."' 
    WHERE username='".$_POST['username']."'")) { ... }

我試過了:

update=FROM_UNIXTIME(".$_.")
update=UNIX_TIMESTAMP(".strtotime($_).")
update=UNIX_TIMESTAMP('".strtotime($_)."')
update='".UNIX_TIMESTAMP(strtotime($_))."'
update='".UNIX_TIMESTAMP($_)."'
update='".$_."'

任何幫助將不勝感激! 謝謝戴夫

如果要使用update作為列名,則應使用反引號將其轉義,因為它是保留字 $_的值適用於該字段本身。

mysql_query(" ... SET likes = 1, `update` = '$_' ...")

還有一件事; 您應該轉義$_POST['username']以避免SQL注入:

" ... WHERE username='" . mysql_real_escape_string($_POST['username']) . "'");

您還可以使用格式字符串來組合所有內容,例如:

$sql = sprintf("UPDATE Accounts SET likes='%d',`update`=%s' WHERE username='%s'", 
    1,
    $_,
    mysql_real_escape_string($_POST['username'])
);

$res = mysql_query($sql) or die("yikes: " . mysql_error());

也:

請不要在新代碼中使用mysql_*函數 它們不再維護,已正式棄用 看到紅色框了嗎? 而是了解准備好的語句 ,並使用PDOMySQLi- 本文將幫助您確定哪一個。 如果您選擇PDO, 這是一個很好的教程

mysql_query("UPDATE Accounts SET likes='1',update='".$_."' WHERE username='".$_POST['username']."'")

您在查詢中有兩個選項, now()curdate()函數。

now()返回日期以及格式的時間戳; YYYY-MM-DD HH:MM:SS

curdate()以YYYY-MM-DD格式返回日期

您的查詢將如下所示:

mysql_query("UPDATE Accounts SET likes='1', `update`='now()' WHERE username='".$_POST['username']."'")

注意后面的滴答聲,因為它是保留字,所以需要在更新中使用。 您需要轉義保留,以便可以將其用作列名。

請不要在新代碼中使用mysql_*函數 它們不再維護,已正式棄用 看到紅色框了嗎? 而是了解准備好的語句 ,並使用PDOMySQLi- 本文將幫助您確定哪一個。 如果您選擇PDO, 這是一個很好的教程

update是MySQL語法中的關鍵字,您不應命名字段update 嘗試將其命名為: updated_atupdated_date

如果無法執行此操作,則必須在查詢中引用字段名稱:

"UPDATE Accounts 
SET likes='1',`update`='".$_."' 
WHERE username='".$_POST['username']."'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM