简体   繁体   中英

Unable to update data in MySQL using PHP PDO Prepared

This is my code:

<?php
$servername = "localhost";
$username = "root";
$password = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=site", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare sql and bind parameters
    $stmt = $conn->prepare("UPDATE site_users SET users_email_verified = :users_email_verified WHERE users_email = :users_email ");

    $stmt->bindParam(':users_email_verified', $users_email_verified,PDO::PARAM_STR);
    $stmt->bindParam(':users_email',$_GET["email"],PDO::PARAM_STR);

    $users_email_verified = "yes";

    $stmt->execute();
    echo "done";

    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
?>

But it does not update the record.

But If I write the email directly inside $user_email variable (manually), like this

$users_email = "xyz@example.com";

Then the code works.

I do not understand why? How to fix it?

You have set the binding to be INTEGERS instead of STRINGS here:

$stmt->bindParam(':users_email_verified', $users_email_verified,PDO::PARAM_INT);
$stmt->bindParam(':users_email',$_GET["email"],PDO::PARAM_INT);

You should use PDO::PARAM_STR instead.

It also appear that you're not reporting errors, so you should check your web server's error logs for additional information.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM