通过电子邮件的用户批准显示输出,但不更新数据库中的记录

时间:2019-05-27 15:52:09

标签: php mysql sql

我目前正在从事一个项目,需要让用户注册,然后将电子邮件发送到带有批准链接的网站管理员电子邮件(包含下面的php页面,用户电子邮件和sha512)。单击批准链接时,它的意思是用相应的电子邮件更新表,并将isApproved更改为1,但除了打印回显外,它什么也没做。

我尝试更改SQL命令,在名称周围添加`,在w3schools,stackoverflow和其他论坛上查找它,但一无所获。

<?php
    $hash = $_GET['h'];
    $email = $_GET['e'];

    if($hash == hash('sha512', 'ACCEPT')){
    $host = "redacted";
    $dbUsername = "redacted";
    $dbPassword = "redacted";
    $dbname = "redacted";
    //create connection
    $conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
    if (mysqli_connect_error()) 
    {
        die('Connect Error('. mysqli_connect_errno().')'.mysqli_connect_error());
    } 
    else 
    {
        $sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
        echo("approved");
    }
?>

我打开网站时看到的所有内容都是“已批准”,这是我的预期,但数据库中的记录保持不变。

2 个答案:

答案 0 :(得分:0)

我认为您没有运行execute命令。

    $conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
    ....
    $sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
    $stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_execute($stmt);

答案 1 :(得分:0)

那是因为您没有运行查询语句。

$sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";是您编写但未执行的查询。您需要使用mysqli_query()方法执行该操作,该方法传入连接并在参数mysqli_query($conn, $sql);中进行查询。您可以了解有关此here的更多信息。

更新代码:

   <?php
        $hash = $_GET['h'];
        $email = $_GET['e'];

        if($hash == hash('sha512', 'ACCEPT')){
        $host = "redacted";
        $dbUsername = "redacted";
        $dbPassword = "redacted";
        $dbname = "redacted";
        //create connection
        $conn = mysqli_connect($host, $dbUsername, $dbPassword, $dbname);
        if (mysqli_connect_error()) 
        {
            die('Connect Error('. mysqli_connect_errno().')'.mysqli_connect_error());
        } 
        else 
        {
            $sql = "UPDATE `User` SET `isApproved`='1' WHERE `User`.`email`=$email";
            mysqli_query($conn, $sql); // <------- Run SQL Query 
            echo("approved");
        }
    ?>