UPDATE sql table 当前登录用户的值?

UPDATE sql table value of the currently logged in user?

我的这个页面有登录系统和积分系统。每当用户完成一项任务时,他或她将获得+5 分。现在,如何更新当前登录用户数据库中的点值?

我知道我可以 UPDATE table SET point=+5 WHERE id=usersid,但我不知道如何获取当前登录用户的 ID?登录注册系统是用PDO写的

这是我 config.php 的完整代码:

<?php
    $username = "root";
    $password = "";
    $host = "localhost";
    $dbname = "login";
     
    $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
    try { $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); }
    catch(PDOException $ex){ die("Kunne ikke forbinde til databasen: " . $ex->getMessage());}
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    header('Content-Type: text/html; charset=utf-8');
    session_start();
?>

这是我的 reward.php,它不起作用:

<?php
 require('config.php');

 $userId = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');

 $query = "UPDATE users SET point=point+5";
    //Yes, i do realize that i need a WHERE to avoid updating the whole     table.

 echo("$userId's point er opdateret.");
?>

reward.php 中的回显部分很好地回显了登录用户的用户名,但数据库只是没有更新。也没有错误。

Screenshot of table structure

非常感谢各位的回答,非常感谢!

我觉得你需要

$pdo = new PDO('mysql:host=localhost;dbname=someDatabase', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('UPDATE table  SET point = point + 5 WHERE id = :usersid');
$stmt->execute(array(
':usersid'   => $user_id
));

您只能通过了解某个用户的用户 ID(或该用户独有的其他值)来编辑其积分。

正如您在评论中明确指出的那样,您将用户 ID 保存在会话中。您必须牢记的是,将您的 config.php 包含在用户点数更新的每个页面中。

require 'config.php';

接下来您需要知道的是,您可以使用 PHP 的全局会话变量从会话中取回用户 ID。

$userId = $_SESSION['user_id']; // Note: this could have some other name in your case

现在我们有了用户 ID,我们可以开始更新该用户的积分了。我不知道你与数据库通信的方法是什么,所以我把它留给你了。

现在我们要更新用户积分。

$query = "UPDATE users SET point=point+5 WHERE user_id='".$userId."' LIMIT 1";

仅此而已。