PHP中的PDO不工作

PHP中的PDO不工作,php,pdo,Php,Pdo,每次单击按钮,更新都无法按预期工作。但是,如果我更改其中id=1,它会工作 <?php $x=$_GET['id']; require 'db.php'; echo 'sqsas'.$x; $stmt=$conn->prepare("select * from tbluser where id=:id"); $stmt->bindValue('id',$x);

每次单击按钮,更新都无法按预期工作。但是,如果我更改
其中id=1
,它会工作

<?php 
        $x=$_GET['id'];
        require 'db.php';
        echo 'sqsas'.$x;
        $stmt=$conn->prepare("select * from tbluser where id=:id");
        $stmt->bindValue('id',$x);          
        $stmt->execute();


        if(isset($_POST['btnEdit']))
        {   
            $stmt=$conn->prepare('update tbluser set username = :un, password = :pw,email = :em where id=:id');
            $stmt->bindValue(':id',$x);
            $stmt->bindValue(':un',$_POST['txtUsername']);
            $stmt->bindValue(':pw',$_POST['txtPassword']);
            $stmt->bindValue(':em',$_POST['txtEmail']);
            $stmt->execute();
            //header("location:view.php");
        }   
    ?>

这是HTML表单:

<?php while($row = $stmt->fetch(PDO::FETCH_OBJ)) {?>
<form method="post" action="edit.php">
                <table>
                    <tr>
                        <td>id:</td>
                        <td><?php echo $row->id; ?></td>
                    </tr>

                    <tr>
                        <td>Email:</td>
                        <td><input type="text" name="txtEmail" value="<?php echo $row->email; ?>" /></td>
                    </tr>

                    <tr>
                        <td>Username:</td>
                        <td><input type="text" name="txtUsername"  value="<?php echo $row->username; ?>" /></td>
                    </tr>
                    <?php } ?>
                    <tr>
                        <td>Password:</td>
                        <td><input type="text" name="txtPassword"  /></td>
                    </tr>

                    <tr>
                        <td>&nbsp;</td>
                        <td><input type="submit" name="btnEdit" value="SAVE CHANGES"  /></td>
                    </tr>
                </table>
            </form>

身份证件:
电邮:

没有将ID传递给PHP的原因是,它从未声明为表单元素。在HTML中,您只需在屏幕上回显它。我想这是因为你不想让用户编辑ID,只想编辑姓名、密码和电子邮件。但是,如果希望在提交表单时将其传递给PHP脚本,则必须将其声明为表单元素,例如
。您可以隐藏它以防止用户编辑它,例如:

<input type="hidden" name="id" value="<?php echo $row->id; ?>">

insert和select可以很好地工作,但是idk为什么不在这里更新它。。我想我通过程序的方式得到了正确的语法。。。。我今天刚开始PDO…请提供更多信息。你期望发生什么,发生了什么?你的HTML是什么样子的?我正在尝试使用pdo更新文本框上的回显数据,但每次单击“编辑”时,都没有发生任何事情。它没有给我任何错误,但是它没有更新,但是当我将sql语句更改为
“update tbluser set username=:un,password=:pw,email=:em,其中id=:id'
它正在更新,…请编辑您的问题,并将HTML代码与您的表单一起包含在其中。在问题的左下角,就在注释上方,应该有一个指向的链接“共享”和“编辑”问题。注意:用户仍然可以使用浏览器的开发人员工具编辑输入字段。输入字段对用户不可见,夏洛特,你能告诉我它叫什么吗?这样我就可以研究如何防止它。谢谢。我用一些信息更新了答案,说明了为什么你使用的方法不安全,不应该用于任何你不想被攻击的东西。你的意思是我只需要会话用户id吗用户每次登录?请记住,cookies也可以编辑。因此,如果您想确保用户不能发送恶意数据(例如更改管理员用户的密码),您不应该让他们访问它。这意味着发送某种会话ID令牌,使用类似MAC的方案对其进行身份验证,并在服务器端的某种存储(数据库或其他)中查找与会话链接的用户ID。如果你愿意,试着实施它,如果你有问题,可以问一个新问题。你可以检查它是否安全。