Php 通过MySQL和PDO更新用户信息。。脚本未更新

Php 通过MySQL和PDO更新用户信息。。脚本未更新,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试创建一个页面,以便用户可以更新其用户名、电子邮件和密码。我制作了这个脚本,不确定它是否有效。当我单击“更新”时,它不会对帐户进行任何更改。不知道是什么。我遗漏了HTML内容 <?php session_start(); require 'core/init.php'; $uname = $_GET['username']; $username = $_SESSION['username']; if(isset($_POST['update'])) { $uname = $

我正在尝试创建一个页面,以便用户可以更新其用户名、电子邮件和密码。我制作了这个脚本,不确定它是否有效。当我单击“更新”时,它不会对帐户进行任何更改。不知道是什么。我遗漏了HTML内容

<?php
session_start();
require 'core/init.php';
$uname = $_GET['username'];
$username = $_SESSION['username'];
if(isset($_POST['update'])) {
    $uname = $_GET['username'];
    if(!empty($_POST['username'])) {
        $updateuname = $db->prepare("UPDATE users SET username = :username WHERE username='".$uname."'");
        $updateuname->bindValue(':username', $_POST['username'], PDO::PARAM_STR);
        $updateuname->execute();
        if(!empty($_POST['email'])) {
            $updateemail = $db->prepare("UPDATE users SET email = :email WHERE username='".$uname."'");
            $updateemail->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
            $updateemail->execute();
            if(!empty($_POST['password'])) {
                if(empty($_POST['password_c'])) {
                    echo 'You must enter your password in both boxes!';
                } else {
                    if($_POST['password'] == $_POST['password_c']) {
                        $updatepassword = $db->prepare("UPDATE users SET password = :password WHERE username='".$uname."'");
                        $updatepassword->bindValue(':password', $_POST['password'], PDO::PARAM_STR);
                        $updatepassword->execute();
                    } else {
                        echo 'Passwords did not match';
                    }
                }
            }
        }
    }
    echo 'Details updated!';
}
?>


可能的重复项您是否使用GET或POST获取变量?代码对我来说没有意义:您同时有一个
$\u GET[“uname”]
和一个
$\u POST[“uname”]
?真正地(两个值都应该绑定,而不是连接到字符串中,这是一个SQL注入漏洞)老实说。。。您使用带有占位符的准备好的语句,然后仍然直接插入用户提供的数据,所以仍然留下一个巨大的开放向量?这是完全错误的,更不用说以明文(tsk-tsk)存储密码了。这完全违背了安全的本质。