php - 为什么我的 PHP 代码没有更新 SQL

标签 php sql

有谁知道为什么这个 PHP 代码不更新 pictures 列,它会更新其余部分,但不会更新 pictures 列,它是更新用户信息所以电子邮件地址,密码和图片我对 PHP 很陌生,所以我真的不知道在查找错误时要查找什么

    <?php 

    require("common.php"); 

    if(empty($_SESSION['user'])) 
    { 
        header("Location: login.php"); 

        die("Redirecting to login.php"); 
    } 

    if(!empty($_POST)) 
    { 
        if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
        { 
            die("Invalid E-Mail Address"); 
        } 

        if($_POST['email'] != $_SESSION['user']['email']['picture']) 
        { 
            $query = " 
                SELECT 
                    1 
                FROM users 
                WHERE 
                    email = :email
                    picture = :picture
            "; 

            $query_params = array( 
                ':email' => $_POST['email'] 
            ); 

            try 
            { 
                $stmt = $db->prepare($query); 
                $result = $stmt->execute($query_params); 
            } 
            catch(PDOException $ex) 
            { 
                die("Failed to run query: " . $ex->getMessage()); 
            } 

            $row = $stmt->fetch(); 
            if($row) 
            { 
                die("This E-Mail address is already in use"); 
            } 
        } 

        if(!empty($_POST['password'])) 
        { 
            $salt = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647)); 
            $password = hash('sha256', $_POST['password'] . $salt); 
            for($round = 0; $round < 65536; $round++) 
            { 
                $password = hash('sha256', $password . $salt); 
            } 
        } 
        else 
        { 
            $password = null; 
            $salt = null; 
        } 

        $query_params = array( 
            ':email' => $_POST['email'], 
            ':user_id' => $_SESSION['user']['id'], 
            ':picture' => $_POST['picture'], 
        ); 

        if($password !== null) 
        { 
            $query_params[':password'] = $password; 
            $query_params[':salt'] = $salt; 
        } 

        $query = " 
            UPDATE users 
            SET 
                email = :email 
                picture = :picture
        "; 

        if($password !== null) 
        { 
            $query .= " 
                , password = :password 
                , salt = :salt 
            "; 
        } 

        $query .= " 
            WHERE 
                id = :user_id 
        "; 

        try 
        { 
            // Execute the query 
            $stmt = $db->prepare($query); 
            $result = $stmt->execute($query_params); 
        } 
        catch(PDOException $ex) 
        { 
            die("Failed to run query: " . $ex->getMessage()); 
        } 

        $_SESSION['user']['email']['picture'] = $_POST['email']; 

        header("Location: private.php"); 

        die("Redirecting to private.php"); 
    } 

?> 

最佳答案

您缺少一个

$query = " 
    UPDATE users 
    SET 
        email = :email 
        picture = :picture
";

你需要把它改成

$query = " 
    UPDATE users 
    SET 
        email = :email, 
        picture = :picture
";

关于php - 为什么我的 PHP 代码没有更新 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665953/

相关文章:

php - MySQL 仅按特定行排序

mysql - 如何在 T-SQL 中选择一列中具有相同值的多个条目

php - MySQL 头痛,我应该还是不应该?

php - 更改从 mysql 中提取的前 3 条记录的 css 类

php - 使用 PayPal API 获取所有交易

SQL:尝试在数据库的所有行中标记同一客户 ID 和订单号内的最早发货日期

sql - 使用内联查询或连接从另一个表中获取数据?

sql - ExecuteNonQuery 总是返回 -1,即使 SQL 语句是正确的

php - Slim Framework 404 css 问题

php - 用于获取地理位置记录的 MySQL 查询优化