无法使用PHP PDO准备在MySQL中更新数据

时间:2017-08-24 14:52:44

标签: php mysql pdo

这是我的代码:

<?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();
    }
?>

但它没有更新记录。

但如果我直接在$user_email变量(手动)内写电子邮件,就像这样

$users_email = "xyz@example.com";

然后代码有效。

我不明白为什么?如何解决?

1 个答案:

答案 0 :(得分:2)

您已在此处将绑定设置为INTEGERS instead of STRINGS

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

您应该使用PDO::PARAM_STR代替。

您似乎还没有报告错误,因此您应该检查您的网络服务器的错误日志以获取更多信息。