我正在使用php的用户在线和离线状态。我的问题是,当用户登录时,我需要更新TIMESTAMP()列中的时间。但是,这里更新查询不起作用。你能告诉我,如何更新它PHP:更新查询不更新TIMESTAMP()格式列中的时间?
$setLogged = mysqli_query($conn, "UPDATE user SET user_onlineStatus='" . time() . "'WHERE user_id='" . $user_id . "'");
我正在使用php的用户在线和离线状态。我的问题是,当用户登录时,我需要更新TIMESTAMP()列中的时间。但是,这里更新查询不起作用。你能告诉我,如何更新它PHP:更新查询不更新TIMESTAMP()格式列中的时间?
$setLogged = mysqli_query($conn, "UPDATE user SET user_onlineStatus='" . time() . "'WHERE user_id='" . $user_id . "'");
错误是在这里:
"'WHERE user_id='"
应该是:
"' WHERE user_id='"
另外,如果你遇到了这样的错误,当你查询不起作用,总是用var_dump()打印查询并直接在命令行中运行它。
$sql = "UPDATE user SET user_onlineStatus='" . date('Y-m-d H:i:s') . "' WHERE user_id='" . $user_id . "'";
// var_dump($sql)
$setLogged = mysqli_query($conn, $sql);
我都试过,但没有工作 –
节目,有什么命令'显示创建表的用户;'打印 –
这里是取值为字符串(64)“更新用户设置user_onlineStatus =‘1463336827'WHERE USER_ID = '14’”'当我加入'的var_dump($ SQL)' –
'" . time() . "'
你将它作为字符串文字传递,它是一个函数。
UPDATE user SET user_onlineStatus = time() WHERE user_id='" . $user_id . "'
然而,time()
收益为Unix时间戳1463338870
格式,而不是2016-05-15 19:01:39
这就是为什么它在这里没有你,看到你的user_onlineStatus
列是TIMESTAMP类型。理想情况下,您最好使用今日时间和日期的“now”方法,列类型应该是DATE
或DATETIME
。旁注:如上所述,TIMESTAMP类型也是有效的(根据下面的RiggsFolly的评论)。
所以
"UPDATE user SET user_onlineStatus = now() WHERE user_id='$user_id' ";
如果不是非此即彼,那么我怀疑它是VARCHAR这是一个坏主意。
上DATE,DATETIME参考和TIMESTAMP类型
如果没有那些为你工作,那么你的$user_id
可能会失败,是未知的它是否包含一个值。
确保它有一个值,所以检查错误。
请参考以下链接http://php.net/manual/en/mysqli.error.php和http://php.net/manual/en/function.error-reporting.php 并将其应用于您的代码。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$setLogged = mysqli_query($conn,
"UPDATE user SET user_onlineStatus = NOW()
WHERE user_id='" . $user_id . "' ") or die(mysqli_error($conn));
几个未知数:
mysqli_
以外的任何其他接口连接,则这些不同的API不会混合。Foonotes:
你现在的代码是开放的SQL injection。使用prepared statements或PDO与prepared statements。
@ImranHasan如果你不会按照我的意见,请按照这个建议 – RiggsFolly
* Howdy Smokey * @RiggsFolly :-) –
希望你别介意编辑我的老太婆 – RiggsFolly
您可以通过执行'“更新用户设置user_onlineStatus = NOW()”,为响应' – RiggsFolly
谢谢简化。 '时间()'功能可以正常使用,但问题是在更新查询 –
搞好的建议'“更新用户设置user_onlineStatus = NOW()其中USER_ID =‘$ user_ID的’”' – RiggsFolly