leo.kaleb Ответов: 1

Синтаксис Sql пытается обновить таблицу


Добрый день всем, у меня возникла проблема при попытке обновить таблицу:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'name='Joshh'   WHERE email='yoyo@gmail.com'' at line 1


Есть идеи? Заранее спасибо.

Что я уже пробовал:

<div class="modal fade" id="defaultModal" tabindex="-1" role="dialog" aria-labelledby="defaultModalLabel" aria-hidden="true">
										<div class="modal-dialog">
											<div class="modal-content">
												<div class="modal-header">
													<h4 class="modal-title" id="defaultModalLabel">Edit Information</h4>
													<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
												</div>
												<div class="modal-body">
													<form action="" method="post">
    <div class="form-group">
      <label for="usr">Username:</label>
      <input type="text" class="form-control" disabled="disabled"  value="<?php echo $name;?>" id="usr" placeholder="Username" name="u_name" required="required">
    </div>
 <div class="form-group">
      <label  for="email">Email:</label>
      <input type="Email" class="form-control" id="email" value="<?php echo $eml;?>" disabled="disabled" placeholder="Enter Email" name="email" required="required">
      <input type="hidden" class="form-control" id="email" value="<?php echo $eml;?>" placeholder="Enter Email" name="email" required="required">
    </div> 
    <div class="form-group">
      <label for="pwd">New Password:</label>
      <input type="password" class="form-control" id="pswd"  placeholder="Enter password" name="pswd" required="required" onkeyup='check();'>
       <label for="cpwd">Confirm_Password:</label>
      <input type="password" class="form-control" id="cpswd" placeholder="Confirm password" name="cpswd" required="required" onkeyup='check();'>
      <span id='message'></span>
      <div class="form-group">
      <label for="pwd">Phone:</label>
      <input type="text" class="form-control" id="address" value="<?php echo $phn;?>" placeholder="Enter Phone" name="phone" required="required">
    </div>

    </div>
    <div class="form-group">
      <label for="pwd">Address:</label>
      <input type="text" class="form-control" id="address" value="<?php echo $addr;?>" placeholder="Enter Address" name="address" required="required">
    </div>
    <center>
    <button type="submit" name="submit" class="btn btn-primary">Save Change</button>
  </center>
  </form>



------------------

// Create connection
$conn = mysqli_connect($servername, $username, $password,$db);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}?>
<?php
$name = $credit = $eml = $phone = $addr ="";
if (!isset($_SESSION["username"])) {
# code...
header("location:index.php");
}else {
$un = $_SESSION["username"];

$sql = "SELECT * FROM registration_form where username='$un'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_array($result)) {
$name = $row["username"];
$eml = $row["email"];
$credit = $row["credit"];
$phone = $row["phone"];
$addr = $row["Address"];
$fname = $row["fname"];
$lname = $row["lname"];
$binp = $row["binp"];
$amm = $row["amm"];
$bname = $row["bname"];
$acc = $row["acc"];
$rnumber = $row["rnumber"];
}
}
}
if(isset($_POST['submit'])){
$un = $_POST['u_name'];
$em = $_POST['email'];
$ps = $_POST['pswd'];
$cps = $_POST['cpswd'];
$p = $_POST['phone'];
$bd = $_POST['address'];

$sql = "UPDATE registration_form SET password ='$ps', phone='$p',Address='$bd', first name='$fname' WHERE email='$em'";

if($ps==$cps){
if (mysqli_query($conn, $sql)) {
?>
alert("Saved");
<?php
} else {

$error = "Error: " . mysqli_error($conn);
?>

alert("<?php echo $error; ?>");
<?php
}
} else {
?>
alert("Please Enter Correct Password and Try Again!");
<?php
} 
}

Dave Kreskowiak

HTML совершенно бесполезен для этой ошибки. Это код на стороне сервера, который строит и выполняет этот запрос БД, который любой должен был бы видеть.

Mohibur Rashid

какой у вас вопрос? Почему вы выбросили этот бесполезный html-код?

leo.kaleb

// Создать соединение
$Конн = mysqli_connect($имя_сервера, $имя пользователя, $пароль$дБ);

// Проверить подключение
если (!$conn) {
die("ошибка подключения:" . mysqli_connect_error());
}?>
<?php
$имя = $кредит = $Полс = $телефон = $адрес ="";
if (!isset($_SESSION["username"])) {
# код...
заголовок("location:index.php");
}еще {
$un = $_SESSION["имя пользователя"];

$sql = "SELECT * FROM registration_form where username='$un'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
// выходные данные каждой строки
while($row = mysqli_fetch_array($result)) {
$name = $row["имя пользователя"];
$eml = $row["электронная почта"];
$credit = $row["кредит"];
$phone = $row["телефон"];
$addr = $row["адрес"];
$fname = $row["fname"];
$lname = $row["lname"];
$ИЯФ = $строки["ИЯФ СО РАН"];
$amm = $row["amm"];
$имя = $строка["имя"];
$acc = $row["acc"];
$rnumber = $row["rnumber"];
}
}
}
if(isset($_POST['submit'])){
$un = $_POST['u_name'];
$ЭМ = $_POST, где['электронной почты'];
$ps = $_POST['pswd'];
$cps = $_POST['cpswd'];
$p = $_POST['телефон'];
$bd = $_POST['адрес'];

$sql = "UPDATE registration_form SET password ='$ps', phone='$p',Address='$bd', first name='$fname' WHERE email='$em'";

если($ПС==$Роспотребнадзор){
if (mysqli_query($conn, $sql)) {
?>
предупреждение("Спас");
<?php
} еще {

$error = "Error:" . mysqli_error($conn);
?>

предупреждение("&амп;ЛТ;?PHP Эхо $ошибка; ?&ГТ;");
<?php
}
} еще {
?>
предупреждение("пожалуйста, введите правильный пароль и повторите попытку!");
<?php
}
}

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

1 Ответов

Рейтинг:
8

Patrice T

Вы не можете использовать имена полей с такими пробелами, используйте квадратный парантезис вокруг '[]'

$sql = "UPDATE registration_form SET password ='$ps', phone='$p',Address='$bd', [first name]='$fname' WHERE email='$em'";

-----
$sql = "UPDATE registration_form SET password ='$ps', phone='$p',Address='$bd', first name='$fname' WHERE email='$em'";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]