Синтаксис SQL, который отправил мне ошибку

У меня есть база данных 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»

Заранее спасибо.

0

Решение

Проблема заключается в 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-инъекций. Вам нужно использовать подготовленные заявления.

1

Другие решения

Вы должны преобразовать этот запрос в две части

$sql1 = "UPDATE user SET username = $newName WHERE username = 'dodlo.rg'";
$sql2 = "SELECT * FROM user";
1

По вопросам рекламы [email protected]