Как обновить запись с SQL - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь обновить запись имени пользователя, добавив новую форму.

После того, как я выполню инструкцию, запись в моей базе данных будет удалена, но она НЕ ЗАМЕНЯЕТСЯ новой, полученной из формы.Я не могу понять, почему.

index.php:

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

change.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;
}

Я хотел бы заменить имя подключенного пользователя натот, который приходит из формы.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Первое, что я вижу, это то, что вы не указали форму метод . Без method=? по умолчанию GET . Читайте об этом здесь

Вы пытаетесь получить обновленное значение , используя POST

Изменить <form action="change.php"> на <form action="change.php" method="post">

С учетом всего сказанного ... поскольку использование метода get - это легкий взлом, лучше использовать post при передаче информации с одной страницы на другую.

Вы также можете изменить <button>Change username</button> на <input type="button" name="submit" value="Change username" />

Счастливого кодирования!

0 голосов
/ 17 июня 2019
$stmt->bindValue('sNewUsername', $txtNewUsername);

Я не знаю, является ли это причиной вашей проблемы, но вам не хватает ":" sNewUsername

...