簡體   English   中英

如何使用PHP插入查詢將當前時間戳插入MySQL數據庫

[英]How to insert the current timestamp into MySQL database using a PHP insert query

在我的MySQL數據庫中,我有一個結構表

username - varchar
insert_time - timestamp

這個表是在MySQL中使用phpMyAdmin工具創建的,對於insert_time列,我提到了默認值為0000-00-00 00:00:00

現在問題是,我必須使用PHP腳本在稍后使用當前時間戳更新此默認值。

我嘗試了以下PHP代碼:

$update_query = 'UPDATE db.tablename SET insert_time=now() '.
                'WHERE username='.$somename;

運行PHP腳本時,它會失敗,並且無法在數據庫中插入任何內容。

我究竟做錯了什么?

您收到了什么錯誤消息?

我猜你的實際錯誤是因為你的php變量沒有用引號括起來。 試試這個

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'"; 

你對now()的使用是正確的。 但是,您需要在整個查詢周圍使用一種類型的引號,而在值周圍使用另一種類型的引號。

您可以修改查詢以在開頭和結尾使用雙引號,並在$somename周圍使用單引號:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";

忘了把變量放在沒有引號的sql語句中。

 $update_query = 
      "UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";

此格式用於獲取當前時間戳並存儲在mysql中

$date = date("Y-m-d H:i:s"); 

$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'"; 

不喜歡任何這些解決方案。

我就是這樣做的:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" 
            . sqlEsc($somename) . "' ;";

然后我使用自己的sqlEsc函數:

function sqlEsc($val) 
{
    global $mysqli;
    return mysqli_real_escape_string($mysqli, $val);
}

您也可以使用UNIX_TIMESTAMP()代替NOW()

$update_query = "UPDATE db.tablename 
                 SET insert_time=UNIX_TIMESTAMP()
                 WHERE username='$somename'";

MySQL中的UNIX_TIMESTAMP和NOW()之間的區別

暫無
暫無

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

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