簡體   English   中英

無法使用准備好的PHP PDO更新MySQL中的數據

[英]Unable to update data in MySQL using PHP PDO Prepared

這是我的代碼:

<?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";

然后代碼起作用。

我不理解為什么? 如何解決?

您已在此處將綁定設置為INTEGERS而不是STRINGS

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

您應該改用PDO::PARAM_STR

似乎還沒有報告錯誤,因此您應該檢查Web服務器的錯誤日志以獲取其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM