2015-08-06 4 views
-2

У меня возникли проблемы с использованием этой подготовки и привязки. Я попробовал одно и то же с меньшими переменными для привязки. Я успешно использовал подготовку только с именами Fname, Lname, Password, $ UserID и использованием sssi с объектом bind_param. Может ли кто-нибудь объяснить, что я делаю неправильно, когда использую больше переменных в моем коде привязки? В приведенном ниже коде он выводит только те же данные из mysqli и не обновляет его.Как исправить stmt подготовить и связать

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"); 
+1

У вас слишком много 'ssss' –

+0

Что такое 'sssssi' в $ stmt-> bind_param (" ssssssi ", $ firstname, $ lastname, $ PW, $ UserLevel, $ EM, $ UserID); код? –

+2

и 'Email =?,' <* Тоже убивает Сэм * @JayBlanchard - @ OP, вы не проверяете наличие ошибок. Эта ошибка «эха»: не удалось подготовить SQL-инструкцию. »;' Ничего не делает. Этот http://php.net/manual/en/mysqli.error.php делает. –

ответ

1

Хотя вы не указали типы данных, которые делают это сложным, я буду опасаться.

Fname = s

Lname = s

Password = s

UserLevel = i (?)

Email = s

Рассчитываю 4 S'есть, но у вас есть .

Попробуйте это,

$stmt->bind_param("sssisi", $firstname, $lastname, $PW, $UserLevel, $EM, $UserID); 

Edit 1

Как @ Fred-II- сказал, ваш SQL-запрос неправильно.

Изменить

"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ?, WHERE UserID= ?" 

к,

"UPDATE users SET Fname = ?, Lname = ?, Password = ?, UserLevel = ?, Email = ? WHERE UserID= ?" 

Вы имели обучение ,.

+0

Вы были правы, я потерял запятую после того, как мне захотелось, чтобы изменения произошли для этого UserID, который сейчас работает. Кроме того, для размещения sssisi необходимо разместить i для каждого целого числа. – alstonan25

+0

@ alstonan25 рад помочь. – Script47