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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обновление записей в MySQL (UPDATE)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Сто раз перепроверил - не работает
AlexMen
Отправлено: 20 Ноября, 2011 - 19:46:47
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Всех приветствую!

Прошу взглянуть, где у меня ошибка в функции UPDATE базы данных MySQL. Соединение с БД проходит нормально, данные считываются, а вот обновления данных не происходит.
Вот фрагмент кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. ...
  3. mysql_select_db($db) or die('Could not select database');
  4.     $query = mysql_query("UPDATE seminars
  5.    SET mesto = '".$mesto."',
  6.    SET data = '".$data."',
  7.    SET tema = '".$tema."',
  8.    SET lektor = '".$lektor."',
  9.    SET lektor_comment = '".$lektor_comment."',
  10.    SET programma = '".$programma."',
  11.    SET cost = '".$cost."',
  12.    SET cost_stand = '".$cost_stand."',
  13.    SET data_skidka = '".$data_skidka."',
  14.    SET cost_zao = '".$cost_zao."',
  15.    SET srok = '".$srok."',
  16.    SET addons = '".$addons."',
  17.    SET phone = '".$phone."'
  18.    WHERE region like '$region'");
  19.         if ($query) {
  20.                 echo "<div align=center>Данные успешно обновлены!</div><br>";
  21.                 } else {
  22.                 echo "<div align=center>Невозможно сохранение данных в БД!</div><br>";
  23.                 }
  24.         mysql_close($link);
  25. ...
  26.  


С кавычками экспериментировал по-всякому, форум здесь тоже перерыл - не работает. Выводится надпись "Невозможно сохранение данных в БД!"

Пожалуйста, помогите разобраться. Весь код не привожу - объемный. Но если чего не хватает - скажите, напишу.

Буду благодарен за конструктивные ответы.
 
 Top
sKaa
Отправлено: 20 Ноября, 2011 - 19:49:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


echo mysql_error()
 
 Top
AlexMen
Отправлено: 20 Ноября, 2011 - 19:54:24
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Спасибо Улыбка
Вывелось следующее:

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 'SET data = '2011-12-20', SET tema = 'ПРОВЕДЕНИЕ ' at line 3

Значит, ошибка в кавычках? Или как?
 
 Top
sKaa
Отправлено: 20 Ноября, 2011 - 20:02:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. $sql = "UPDATE seminars
  2.   SET mesto = '".$mesto."',
  3.   SET data = '".$data."',
  4.   SET tema = '".$tema."',
  5.   SET lektor = '".$lektor."',
  6.   SET lektor_comment = '".$lektor_comment."',
  7.   SET programma = '".$programma."',
  8.   SET cost = '".$cost."',
  9.   SET cost_stand = '".$cost_stand."',
  10.   SET data_skidka = '".$data_skidka."',
  11.   SET cost_zao = '".$cost_zao."',
  12.   SET srok = '".$srok."',
  13.   SET addons = '".$addons."',
  14.   SET phone = '".$phone."'
  15.   WHERE region like '$region'";
  16. echo $sql;
  17. $query = mysql_query($sql);

(Добавление)
попробуй названия столбцов в такие ковычки взять `mesto` = ...

(Отредактировано автором: 20 Ноября, 2011 - 20:02:58)

 
 Top
Runet4ik
Отправлено: 20 Ноября, 2011 - 20:05:04
Post Id



Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  
Откуда: Россия


Помог: 0 раз(а)




AlexMen пишет:
Всех приветствую!

Прошу взглянуть, где у меня ошибка в функции UPDATE базы данных MySQL. Соединение с БД проходит нормально, данные считываются, а вот обновления данных не происходит.
Вот фрагмент кода:

PHP:
скопировать код в буфер обмена
  1.  
  2. ...
  3. mysql_select_db($db) or die('Could not select database');
  4.     $query = mysql_query("UPDATE seminars
  5.    SET mesto = '".$mesto."',
  6.    SET data = '".$data."',
  7.    SET tema = '".$tema."',
  8.    SET lektor = '".$lektor."',
  9.    SET lektor_comment = '".$lektor_comment."',
  10.    SET programma = '".$programma."',
  11.    SET cost = '".$cost."',
  12.    SET cost_stand = '".$cost_stand."',
  13.    SET data_skidka = '".$data_skidka."',
  14.    SET cost_zao = '".$cost_zao."',
  15.    SET srok = '".$srok."',
  16.    SET addons = '".$addons."',
  17.    SET phone = '".$phone."'
  18.    WHERE region like '$region'");
  19.         if ($query) {
  20.                 echo "<div align=center>Данные успешно обновлены!</div><br>";
  21.                 } else {
  22.                 echo "<div align=center>Невозможно сохранение данных в БД!</div><br>";
  23.                 }
  24.         mysql_close($link);
  25. ...
  26.  


С кавычками экспериментировал по-всякому, форум здесь тоже перерыл - не работает. Выводится надпись "Невозможно сохранение данных в БД!"

Пожалуйста, помогите разобраться. Весь код не привожу - объемный. Но если чего не хватает - скажите, напишу.

Буду благодарен за конструктивные ответы.

А где точка перед переменой?

Вот наверно будет вернее:
PHP:
скопировать код в буфер обмена
  1. WHERE region like '".$region."'"

(Отредактировано автором: 20 Ноября, 2011 - 20:13:26)

 
 Top
Bio man
Отправлено: 20 Ноября, 2011 - 20:09:21
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




поле data какой тип данных имеет?
 
 Top
AlexMen
Отправлено: 20 Ноября, 2011 - 20:13:32
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Точка перед переменной не помогла.

В поле 'дата' тип данных - date.

Изменил запрос, как написали, результат - тот же, но с той лишь разницей, что стал отображаться сам запрос:

UPDATE seminars SET mesto = 'Гостиница', SET data = '2011-12-20', SET tema = 'ПРОВЕДЕНИЕ', SET lektor = 'ПЕТРОВ', SET lektor_comment = 'Уполномоченный эксперт', SET programma = '1. Камеральная проверка', SET cost = '3100.00', SET cost_stand = '2900.00', SET data_skidka = '2011-12-04', SET cost_zao = '2400.00', SET srok = '2011-12-20', SET addons = '', SET phone = '(844-2) 32-32-22' WHERE region like 'Волгоград'
Невозможно сохранение данных в БД!

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 'SET data = '2011-12-20', SET tema = 'ПРОВЕДЕНИЕ ' at line 3
(Добавление)
А после

PHP:
скопировать код в буфер обмена
  1. WHERE region like '".$region."'"

вообще выдается ошибка синтаксиса.
 
 Top
sKaa
Отправлено: 20 Ноября, 2011 - 20:19:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


либо измени тип поля data на varchar либо сохраняй туда метку времени а не что попало.
метка времени сдерствами пхп time()
средствами MySQL : "SELECT UNIX_TIMESTAMP"
 
 Top
Bio man
Отправлено: 20 Ноября, 2011 - 20:23:57
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




AlexMen, зачем использовать LIKE для жесткого сравнения? юзай =
Цитата:
WHERE region = '{$region}'"

а дату либо записывай правильно либо пиши timestamp... либо varchar...
 
 Top
AlexMen
Отправлено: 20 Ноября, 2011 - 20:27:08
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




После изменения типа поля на varchar вообще абракадабра получается, ошибок полна страница.

Поле "data" мне нужно не для определения текущей даты, а для жесткого задания даты мероприятия (в данном случае - 20 декабря 2011 г.) Не хватает часов:минут:секунд?
 
 Top
Runet4ik
Отправлено: 20 Ноября, 2011 - 20:30:01
Post Id



Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  
Откуда: Россия


Помог: 0 раз(а)




Попробуй так:
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query( "UPDATE seminars SET mesto = '$mesto', data = '$data', tema = '$tema', lektor = '$lektor', lektor_comment = '$lektor_comment', programma = '$programma', cost = '$cost', cost_stand = '$cost_stand', data_skidka = '$data_skidka', cost_zao = '$cost_zao', srok = '$srok', addons = '$addons', phone = '$phone' WHERE region like '$region'");
 
 Top
tuareg
Отправлено: 20 Ноября, 2011 - 20:31:02
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




А зачем столько SET-ов....? Вполне хватит одного Улыбка
Весь запрос писать не буду
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. "UPDATE seminars
  3.   SET mesto = '".$mesto."',
  4.    data = '".$data."',
  5.    tema = '".$tema."',
  6.    lektor = '".$lektor."',
  7.    lektor_comment = '".$lektor_comment."'..../// и там все что было до этого
  8.  
  9.  

P.S и регион лучше region='".$region."' вместо LIKE

(Отредактировано автором: 20 Ноября, 2011 - 20:33:50)

 
 Top
AlexMen
Отправлено: 20 Ноября, 2011 - 20:33:30
Post Id



Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Runet4ik, так пробовал - бесполезно.

tuareg, сейчас попробую.
 
 Top
tuareg
Отправлено: 20 Ноября, 2011 - 20:36:44
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Если не получится выложите структуру таблицы и данные которые пытаетесь внести
 
 Top
Bio man
Отправлено: 20 Ноября, 2011 - 20:42:15
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




и в правду сетов много!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB