我创建了一个登录页面,在数据库表中我有一个名为last_access的字段,用于存储数据类型为时间戳的上次登录日期和时间
以下是选择语句;
$sql="SELECT * FROM $tbl_name WHERE $db_usercol='$myusername' and $db_passcol='$mypassword'";
$result=mysql_query($sql);
如何在每次用户登录时更新字段"last_access"?并将值设置为 NOW()。
谢谢
UPDATE $tbl_name set last_access = NOW() WHERE $db_usercol='$myusername'
或者你可以使用
UPDATE $tbl_name set last_access = NOW() WHERE
$db_usercol='$myusername' AND $db_passcol='$mypassword'
而不是您的选择,并检查受影响的行数。如果没有 ->登录失败。如果 1 ->登录成功。如果更多,你遇到了问题...
但第一件事应该是消除该SQL注入漏洞!
检查 http://php.net/manual/en/book.pdo.php,您的SQL函数需要进行一些更改,但它实际上非常易于使用,例如:
$pdo = new PDO("mysql:host=localhost;dbname=yourdbname", 'dbuser', 'dbpass');
$stmt = $pdo->prepare('SELECT * from table where column = :column');
$stmt->bindParam(':column', $column);
$stmt->execute();
$result = $stmt->fetchAll();
这很容易,SQL注入攻击将不成功
在登录脚本/函数中添加以下内容:
$sql = sprintf("UPDATE %s SET last_access = NOW() WHERE id = %d", $tbl_name, $user_id);
$result = mysql_query($sql);
希望有帮助。
身份验证成功后,您可以执行以下操作:
//get the id after user has logged in then run the update query
mysql_query("UPDATE your_table SET `last_access` = NOW() WHERE id =".$id);