In my application I can be able to upload an image for a user. I am maintaining the user_id   as follows.
+----------+ | user_id | +----------+ | ADM-0001 | | ADM-0002 | | DOC-0001 | +----------+
The problem is, if I will upload the user image, it will update all rows in the table. But if I manually changed the user_id as 1 instead of ADM-0001, then it will update the specific row.
Following is the PHP code,
<?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();
?>
Actually I a, wondering why it was happening. Please help me improve my code. Thanks in advance.
Advertisement
Answer
You are telling the bind-param method to convert the user_id into an integer. Change it to keep it as a string:
$stmt->bind_param("ss", $image_name, $_SESSION['user_id']);