Как вставить значения с помощью предложения PHP MySQl UPDATE?

Ниже приведена HTML-форма, которая принимает тему ввода & начинающий (да, нет) от пользователя и вставляет его в базу данных

<form action="coursesignup.php" method="post">
Select Subject:<br>
<select name="subject">
<option value="select" selected>select</option>
<option value="Database Management Systems">Database Management Systems</option>
<option value="Advanced Microprocessors">Advanced Microprocessors</option>    </select><br><br>
Are you a Beginner:<br>
<select name="beginner">
<option value="select" selected>select</option>
<option value="yes">yes</option>
<option value="no">No</option></select><br><br>

<input type="submit" value="Submit" /></form>

Форма отправляет данные в следующий php файл.
Однако он не вставляет значения в соответствующий идентификатор пользователя, а помещает их в конец таблицы.

<?php

session_start();

if($_SESSION["username"])
$_POST["username"]=$_SESSION["username"];
$user=$_POST["username"];

// Check connection
$con=mysqli_connect("localhost","root","","elearning");

if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security

$subject = mysqli_real_escape_string($con, $_POST['subject']);
$beginner= mysqli_real_escape_string($con, $_POST['beginner']);

$sql=" UPDATE student_info SET subject=$subject AND beginner=$beginner
WHERE username=$user " ;if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
echo "Successfuly entered";mysqli_close($con);
?>

Это дает следующую ошибку:

Ошибка: Синтаксис ошибки в ‘Системах управления И; новичок = да ГДЕ имя пользователя = gk4316’ а ля ligne 1

0

Решение

Есть несколько вещей не так с вашим запросом.

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

Еще одна проблема, вам нужно удалить AND и вместо этого используйте запятую.

$sql=" UPDATE student_info SET subject='$subject', beginner='$beginner'
WHERE username='$user' " ;

Вот почему вы получаете сообщение об ошибке.


AND где вы хотите использовать несколько чеков в WHERE пункт.

Например:

`WHERE column_1 = 'something' AND column_2 = 'something else'

Примечание:

Ваш настоящий код открыт для SQL-инъекция. использование готовые заявления, или же PDO с подготовленными заявлениями, они намного безопаснее.


Примечания:

Что-то еще, что я заметил, if($_SESSION["username"]), Вам лучше использовать isset() if(isset($_SESSION["username"])) и используя правильное крепление:

if(isset($_SESSION["username"])){
$_POST["username"]=$_SESSION["username"];
$user=$_POST["username"];
}

Это просто хорошая практика кодирования.


Краткое руководство:

Вот пример использования UPDATE mysqli с подготовленными заявлениями:

Примечание: i обозначает integer а также s обозначает string,

$con = new mysqli('host','user','password','database');
$stmt = $con->prepare("UPDATE `table` SET `title`=?, `description`=?, `price`=?, `location`=?, `email`=?, `date`=? WHERE `id`=?");
$stmt->bind_param("ssisssi", $title_string, $description_string, $price_int, $location_string, $email_string, $date_string, $id_int);
stmt->execute();
0

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

Удалите AND и замените его запятой в вашем обновлении SQL.

$ sql = «ОБНОВЛЕНИЕ student_info SET subject = ‘$ subject’, beginner = ‘$ beginner’
ГДЕ username = ‘$ user’ «;

0

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