Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: помогите с запросом update
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » помогите с запросом update

Страниц (1): [1]
 

1. roman_php - 21 Января, 2008 - 14:25:05 - перейти к сообщению
Доброго времени суток. Помогите, пожалуйста, разобраться с запросом «update» к базе mysql.
Я делаю скрипт новостей и дошел до того момента, где в админе есть возможность редактировать новость (тоесть по идее обновлять «update» строку в базе по индификатору)
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. $tema=$_POST['temanew'];//отредактированная тема
  3. $opis=$_POST['opisanie'];//отредактируемое описание
  4. $text=$_POST['textnew'];//отредактированный текст новости
  5. $id=$_POST['id'];//индификатор новости (указывает на строку в MySQL)
  6. //функция поключения к базе MySQL и выбора бызы
  7. function db_connect($host="localhost",$name_db="forma",$user_db="root",$pass_db="motorola")
  8. {mysql_connect($host, $user_db, $pass_db)or die
  9. ('I cannot connect to db: ' . mysql_error());
  10. //это что бы понимало русскую кодировку
  11. mysql_query("set character_set_client='cp1251'");
  12. mysql_query("set character_set_results='cp1251'");
  13. mysql_query("set collation_connection='cp1251_general_ci'");
  14. //выбрать базу данных
  15. mysql_select_db($name_db);}
  16. db_connect();
  17. mysql_query("UPDATE forma SET (id_name='$tema', opisanie_new='$opis', text_new='$text')
  18. WHERE news_id=$id") or die("Ошибка запроса : " . mysql_error());
  19. ?>
  20.  

Из формы передаются обновленные пользователем данные методом POST и записываются в переменные $tema, $opis, $text, а $id это уникальный индификатор поля в которой надо произвести изменения.
Почему то не получается запрос к базе: mysql_query("UPDATE forma SET(id_name='$tema', opisanie_new='$opis', text_new='$text')
WHERE news_id=$id") or die("Ошибка запроса : " . mysql_error());
То ли я не понял как обновлять с update, то ли мануал по MySQL такой хороший.
Помогите пожалуйста сделать правильный запрос к базе «forma» таблице «news», что бы обновить данные и вставить в таблицу обновленную инфу которая содержится в переменных $tema, $opis, $text, обновить нужно строку с уникальным индификатором $id.
2. EuGen - 21 Января, 2008 - 15:14:32 - перейти к сообщению
Вы неправильно написали запрос UPDATE - ошиблись в синтаксисе. Правильно будет так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_query("UPDATE forma SET id_name='".addslashes($tema)."', opisanie_new='".addslashes($opis)."', text_new='".addslsahes($text)."' WHERE news_id=".(int)($id)) or die("Ошибка запроса : " . mysql_error());
  3.  

Обратите внимание так же, что я добавил экранирование переменных в запросе во избежание SQL-инъекций.
3. Dastar - 21 Января, 2008 - 15:55:55 - перейти к сообщению
Не знаю почему, но в некоторых учебниках синтаксис UPDATE показывают так:
UPDATE table_name SET (pole='obnovlenie', pole2='obnovlenie2'...) WHERE id='id'
4. roman_php - 21 Января, 2008 - 17:34:46 - перейти к сообщению
Всем огромное спасибо, я понял свою ошибку!!!

 

Powered by ExBB FM 1.0 RC1