У меня возникли проблемы с использованием этой подготовки и связывания. Я попробовал то же самое с меньшим количеством переменных для привязки. Я успешно использовал приготовление только с Fname, Lname, Password, $ UserID и использование sssi с объектом bind_param. Может кто-нибудь объяснить, что я делаю неправильно, используя больше переменных в моем коде привязки? С кодом ниже он только печатает те же данные из MySQL и не обновляет их.
if ($stmt = $con->prepare("UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ?, WHERE UserID= ?"))
{
$stmt->bind_param("ssssssi", $firstname, $lastname, $PW, $UserLevel, $EM, $UserID);
$stmt->execute();
$stmt->close();
}
// show an error message if the query has an error
else
{
echo "ERROR: could not prepare SQL statement.";
}
// redirect the user once the form is updated
header("Location: admin.php");
Хотя вы не указали типы данных, что усложняет задачу, я рискну предположить.
Fname = s
Lname = s
Password = s
UserLevel = i
(?)
Email = s
Я считаю 4 с ‘там, но у вас есть 6.
Попробуй это,
$stmt->bind_param("sssisi", $firstname, $lastname, $PW, $UserLevel, $EM, $UserID);
Редактировать 1
Как сказал @ Fred-ii-, ваш SQL-запрос неверен.
+ Изменить
"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ?, WHERE UserID= ?"
чтобы,
"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ? WHERE UserID= ?"
У вас была тренировка ,
,
Других решений пока нет …