У меня есть база данных Mysql с именем пользователя. Вот картинка:
Я хочу программно изменить имя пользователя «dodlo.rg».
На самом деле, у меня есть PHP-версия 7.1. И это часть моего PHPCode:
ИЗДАННЫЙ КОД:
$newName= $_POST["changeT"];
$userId = $_POST["userId"];
$db = mysqli_connect("trolö", "trolö", "trolö123", "trolö")
$sql = "UPDATE user SET username = '$newName' WHERE user_id = '$userId'";
$query = mysqli_query($db, $sql);
$response["successU"] = true;
Но я получаю сообщение об ошибке: «Вы указали ошибку в синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MariaDB, рядом с« SELECT * FROM user »в строке 1»
Заранее спасибо.
Проблема заключается в 2 частях.
Во-первых, поскольку этот столбец является полем varchar, он должен быть внутри кавычек, иначе он вызывает ошибку sql.
Во-вторых, оператор SELECT сразу после этого недопустим, но я думаю, это была ошибка копирования / вставки.
Поэтому ваш рабочий код должен быть:
$newName= $_POST["changeT"];
$db = mysqli_connect("trolö", "trolö", "trolö123", "trolö")
$sql = "UPDATE user SET username = '".addslashes($newName)."' WHERE username = 'dodlo.rg'";
$query = mysqli_query($db, $sql);
$response["successU"] = true;
Кроме того, рассмотрите возможность использования своих первичных ключей в операторе where, а не в поле varchar, так как это повысит скорость при выполнении более сложных запросов. (например. where user_id = 35 instead of where username = 'dodlo.rg'
).
Наконец, но очень важно, этот код может быть уязвим для SQL-инъекций. Вам нужно использовать подготовленные заявления.
Вы должны преобразовать этот запрос в две части
$sql1 = "UPDATE user SET username = $newName WHERE username = 'dodlo.rg'";
$sql2 = "SELECT * FROM user";