2016-09-29 4 views
-3

Вторая половина дня,Ошибка SQL при обновлении таблицы членов PDO php

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

Мой код выглядит следующим образом:

$member_id = $formdata['update']; 
$surname = $formdata['surname']; 
$other_name = $formdata['othername']; 
$contactmethod = $formdata['contactmethod']; 
$email = $formdata['email']; 
$mobilenum = $formdata['mobilenum']; 
$phonenum = $formdata['phonenum']; 
$occupation = $formdata['occupation'];  
$userpass = $formdata['userpass']; 
if(!isset($formdata['magazine'])) 
    $magazine = 0; 
else 
    $magazine = 1; 

//Get ready to talk to the DB 
$db = getDBConnection(); 
//Make a prepared query so that we can use data binding and avoid SQL injections. 
$insertUser = $db->prepare('INSERT into member VALUES 
          (:surname, :other_name, :contact_method, 
          :email, :mobile, :landline, :magazine, :street, 
          :suburb, :postcode, :password, 
          :occupation) WHERE member_id=$member_id'); 
//Bind the data from the form to the query variables. 
//Doing it this way means PDO sanitises the input which prevents SQL injection. 
$insertUser->bindParam(':surname', $surname, PDO::PARAM_STR); 
$insertUser->bindParam(':other_name', $other_name, PDO::PARAM_STR); 
$insertUser->bindParam(':contact_method', $contactmethod, PDO::PARAM_STR); 
$insertUser->bindParam(':email', $email, PDO::PARAM_STR); 
$insertUser->bindParam(':mobile', $mobilenum, PDO::PARAM_STR); 
$insertUser->bindParam(':landline', $phonenum, PDO::PARAM_STR); 
$insertUser->bindParam(':magazine', $magazine, PDO::PARAM_INT); 
$insertUser->bindParam(':street', $streetaddr, PDO::PARAM_STR); 
$insertUser->bindParam(':suburb', $suburbstate, PDO::PARAM_STR); 
$insertUser->bindParam(':postcode', $postcode, PDO::PARAM_INT); 
$insertUser->bindParam(':password', $userpass, PDO::PARAM_STR); 
$insertUser->bindParam(':occupation', $occupation, PDO::PARAM_STR); 

Текущая ошибка в WHERE member_id=$member_id

Я понятия не имею, что ошибка и как ее исправить.

Любые советы?

+0

Я считаю, что это может быть что-то вдоль линии, что моя база данных требует member_id быть ИНТ, где в настоящее время $ member_id = $ formdata ['update']; это только строка. Однако я могу добавить (int) перед выражением $ member_id. Но даже с этим и изменилось. Я не могу обновить свою базу данных. –

+1

Вставка не используется ГДЕ. Вероятно, вы хотите ОБНОВИТЬ. И поскольку вы связываете свои другие переменные, свяжите этот member_id. – aynber

+0

omg. я даже не заметил, что ... –

ответ

0

попробуйте использовать ОБНОВЛЕНИЕ.

'UPDATE member SET surname = :surname, other_name = :other_name, contact_method = :contact_method, 
          email = :email, mobile = :mobile, landline = :landline, magazine = :magazine, street = :street, 
          suburb = :suburb, postcode = :postcode, password = :password, 
          occupation = :occupation) WHERE member_id = :member_id' 

Кроме того, связать другую из параметров для member_id иначе þér будет много смысла делать другие

$insertUser->bindParam(':member_id', $member_id, PDO::PARAM_INT); 
+0

Мне так глупо сейчас хаха –

Смежные вопросы