【问题标题】:How to update a record with SQL如何使用 SQL 更新记录
【发布时间】:2019-10-31 02:03:19
【问题描述】:

我正在尝试使用来自表单的新用户名记录更新用户名记录。

在我执行该语句后,我的数据库中的一条记录被删除,但它没有被来自表单的新记录替换。我不知道为什么。

index.php:

<form action="change.php">
    <input type="text" name="txtNewUsername" id="txtNewUsername" placeholder="new username"><br/>
    <button>Change username</button>
</form>

更改.php:

<?php
session_start();
require_once __DIR__.'/connect.php';

$txtNewUsername = $_POST['txtNewUsername'];
$sUsername = $_SESSION['txtUsername'];

try{
    $stmt = $db->prepare('UPDATE users SET username = :sNewUsername WHERE username = :sOldUsername');
    $stmt->bindValue('sNewUsername', $txtNewUsername);
    $stmt->bindValue(':sOldUsername', $sUsername);
    $stmt->execute();

    echo $txtNewUsername;


}catch(PDOEXception $ex){
    echo $ex;
}

我想将连接用户的用户名替换为来自表单的用户名。

【问题讨论】:

标签: php pdo sql-update


【解决方案1】:

我看到的第一件事是您没有指定表单方法。如果没有 method=?,则默认为 GETRead about it here

您正在尝试使用 POST

检索 更新的

&lt;form action="change.php"&gt; 更改为&lt;form action="change.php" method="post"&gt;

综上所述...由于使用get 方法很容易破解,因此在将信息从一个页面传递到另一个页面时最好使用post

您可能还想将&lt;button&gt;Change username&lt;/button&gt; 更改为&lt;input type="button" name="submit" value="Change username" /&gt;

【讨论】:

    【解决方案2】:
    $stmt->bindValue('sNewUsername', $txtNewUsername);
    

    我不知道这是否会导致您的问题,但您缺少 " : " sNewUsername

    【讨论】:

    • 不需要。
    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 2021-12-20
    • 2021-12-14
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    相关资源
    最近更新 更多