更新 MYSQL 中的特定行

Update specific row in MYSQL

在我的应用程序中,我可以为用户 upload 一个 image。我正在维护 user_id 如下。

+----------+
| user_id  |
+----------+
| ADM-0001 |
| ADM-0002 |
| DOC-0001 |
+----------+

问题是,如果我上传用户图片,它会在 tableupdate all rows。但是如果我手动将 user_id 更改为 1 而不是 ADM-0001,那么它将更新特定的行。

以下是PHP代码,

<?php

session_start();
require_once "../auth/dbconnection.php";

if (isset($_POST['image'])) {

    $croped_image = $_POST['image'];
    list($type, $croped_image) = explode(';', $croped_image);
    list(, $croped_image)      = explode(',', $croped_image);
    $croped_image = base64_decode($croped_image);
    $image_name = time().'.png';

 
    $stmt = $conn->prepare("UPDATE users SET image = ? WHERE user_id= ?");
    $stmt->bind_param("si", $image_name, $_SESSION['user_id']);
    $stmt->execute();

    echo 'Image Uploaded Successfully.';

    if($stmt->affected_rows === 0);


      file_put_contents('blog/'.$image_name, $croped_image);
    

    }else{

        echo "ERROR: Could not prepare query: $stmt. " . mysqli_error($conn);

    }

    $stmt->close();
?>

实际上我想知道为什么会这样。请帮助我改进我的代码。提前致谢。

您告诉绑定参数方法将 user_id 转换为整数。 更改它以将其保留为字符串:

$stmt->bind_param("ss", $image_name, $_SESSION['user_id']);