这是我的代码:
<?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";
然后代码有效。
我不明白为什么?如何解决?
答案 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
代替。
您似乎还没有报告错误,因此您应该检查您的网络服务器的错误日志以获取更多信息。