2014-01-06 5 views
-2

Я пытаюсь обновить мою базу данных SQL несколькими SET. То, что я пытаюсь достичь, - это обновить запись клиента в таблице. Например, клиент может изменить свой адрес.UPDATE SQL база данных с несколькими наборами?

Вот мой код:

  <?php 
      $con = mysql_connect("localhost","root",""); 
       if (!$con){ 
        die('Could not connect: ' . mysql_error()); 
       } 
        mysql_select_db("floras", $con); 
        for ($i=count($_POST['id']); $i--;) { 
          $id = $_POST['id'][$i]; 
          $custf = $_POST['fname']; 
          $custs = $_POST['sname']; 
          $custe = $_POST['email']; 
          $custp = $_POST['phone']; 
          $custm = $_POST['mobile']; 
          $custa1 = $_POST['add1']; 
          $custa2 = $_POST['add2']; 
          $custt = $_POST['town']; 
          $custc = $_POST['county']; 
          $custpc = $_POST['postc']; 
         $sql="UPDATE tbl_customer SET 
           customer_forename=$custf, 
           customer_surname=$custs, 
           customer_email=$custe, 
           customer_phone=$custp, 
           customer_mobile=$custm, 
           customer_address1=$custa1, 
           customer_address2=$custa2, 
           customer_town=$custt, 
           customer_county=$custc, 
           customer_postcode=$custpc 
          WHERE customer_id=$id"; 
       } 
       if (!mysql_query($sql,$con)){ 
        die('Error: ' . mysql_error()); 
       } 
      mysql_close($con); 
      ?> 

Очевидно, что это все было отправлено через пост и $ _POST переменные установлены в другую переменную перед командой SQL.

Когда я открываю страницу, ошибка я получаю:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1, customer_address2=Address 2, customer_town=Town, customer_county=County, cust' at line 1

Любая помощь?

Спасибо всем!

+2

Ваши строки должны быть завернуты в кавычках, и этот незаконный характер не должен быть там '>' 'customer_surname' –

+0

Вы не должны конкатенации пользовательского ввода в отчетности SQL. Вместо этого используйте подготовленные инструкции, чтобы предотвратить использование SQL-инъекций. –

ответ

1

Вам нужно заключать строковые переменные в одном запросе обновления quotes.your будет выглядеть следующим образом:

$sql="UPDATE tbl_customer SET customer_forename='$custf', 
customer_surname='$custs', 
customer_email='$custe', customer_phone='$custp',customer_mobile='$custm', 
customer_address1='$custa1', customer_address2='$custa2', 
customer_town='$custt', 
customer_county='$custc', customer_postcode='$custpc' 
WHERE customer_id=$id"; 
+2

Спасибо, мистер кодер, это здорово. Теперь работает отлично! – Scruffs

+0

@Scruffs приветствуется и на стороне примечания, пожалуйста, не используйте функции mysql_ *, поскольку они являются развратными. Счастливое кодирование. :) –

+0

@Scruffs Вы также можете отметить этот ответ в ответ и закрыть этот вопрос. –

0

у вас есть ошибка в запросе. удалить > из запроса и добавить ' одиночные кавычки

$sql="UPDATE tbl_customer SET `customer_forename`='$custf', 
`customer_surname`='$custs', 
`customer_email`='$custe', `customer_phone`='$custp',`customer_mobile`='$custm', 
`customer_address1`='$custa1', `customer_address2`='$custa2', 
`customer_town`='$custt', 
`customer_county`='$custc', `customer_postcode`='$custpc' 
WHERE `customer_id`='$id'" 
+0

Спасибо, человек, к сожалению, как новичок стека> должны были быть отступом цитаты блока. – Scruffs

+0

приветствуем..и внесли изменения в ваш запрос. вы можете использовать его :) –

+1

Обратные ссылки вокруг имен столбцов не нужны (просто добавляет шум в код) –

0

Удалить лишние > символы с полей и передавать значения в ' одинарные кавычки. Что-то вроде этого:

$sql="UPDATE tbl_customer SET customer_forename='$custf', customer_surname='$custs', customer_email='$custe', customer_phone='$custp', customer_mobile='$custm', customer_address1='$custa1', customer_address2='$custa2', customer_town='$custt', customer_county='$custc', customer_postcode='$custpc' WHERE customer_id='$id'"; } 
Смежные вопросы