Ошибка обновления SQL после регистрации

После создания формы для регистрации пользователя, я хочу добавить группы.
Теперь я сначала попытался отредактировать подготовленное заявление, но это не сработало, поэтому я попробовал это:

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
include('connect.php');
// If the values are posted, insert them into the database.
if (isset($_POST["username"]) && isset($_POST["password"])){
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$epassword = hash("sha512", $password);
$group = 'user';

$query1 = "SELECT * FROM `user` WHERE email='$email'";

$result = mysqli_query($connection, $query1) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1){
$msg1 = "Dit E-mailadres is al in gebruik voor een andere gebruiker.";

}else{

$query = "SELECT * FROM `user` WHERE username='$username'";

$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1){
$msg2 = "Deze gebruikersnaam is al in gebruik.";

}else{

$stmt = $connection->prepare("INSERT INTO `user` (username,password,email) VALUES(?,?,?)");
$stmt->bind_param("sss", $username, $epassword, $email);
$stmt->execute();
$msg = "De gebruiker is aangemaakt.";

$sql2 = "UPDATE user
SET group = $group
WHERE username = $username" ;

$retval = mysqli_query( $connection, $sql2);
if(! $retval )
{
die('Could not update data: ' . mysqli_error($connection));
}
}
}
}
?>

и теперь он создает пользователя (без группы) после отображения следующей ошибки:

Could not update data: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group = user WHERE username = test' at line 1

не могли бы вы помочь мне с этим?

благодаря Юргену Д это рабочий код:

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
include('connect.php');
// If the values are posted, insert them into the database.
if (isset($_POST["username"]) && isset($_POST["password"])){
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$epassword = hash("sha512", $password);
$modus = "user";

$query1 = "SELECT * FROM `user` WHERE email='$email'";

$result = mysqli_query($connection, $query1) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1){
$msg1 = "Dit E-mailadres is al in gebruik voor een andere gebruiker.";

}else{

$query = "SELECT * FROM `user` WHERE username='$username' ";

$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if ($count == 1){
$msg2 = "Deze gebruikersnaam is al in gebruik.";

}else{

$stmt = $connection->prepare("INSERT INTO `user` (username,password,email) VALUES(?,?,?)");
$stmt->bind_param("sss", $username, $epassword, $email);
$stmt->execute();
$msg = "De gebruiker is aangemaakt.";

$sql2 = "UPDATE `user`
SET `modus` = '$modus'
WHERE username = '$username'";

$retval = mysqli_query( $connection, $sql2);
if(! $retval )
{
die('Could not update data: ' . mysqli_error($connection));
}
}
}
}
?>

0

Решение

group это зарезервированное слово и должен быть экранирован с помощью кавычек.

UPDATE user
SET `group` = '$group'
WHERE username = '$username'"

И, как уже упоминали другие — поместите ваши строки в кавычки или лучше заглянуть в Подготовленные заявления.

3

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

Вам нужно обернуть строки в апострофы, как вы это делали в одном из ваших предыдущих запросов; пример:

$sql2 = "UPDATE `user` SET `group` = $group WHERE username = '$username'";

Кроме того, согласно Юрген д ответ, вам нужно заключить столбец группы в обратные черты, так как это зарезервированное слово.

0

Я не знаю, позволяет ли mysql использовать «group» в качестве имени столбца, но наиболее очевидная ошибка — вам нужно заключить в значение группы двойные кавычки: set group = «$ group»

0

пытаться:

$sql2 = "UPDATE `user`
SET `group` = '$group'
WHERE `username` = '$username'";
0
По вопросам рекламы [email protected]