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 :: Версия для печати :: Обновление записей в MySQL (UPDATE)
Форумы портала PHP.SU » » Вопросы новичков » Обновление записей в MySQL (UPDATE)

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

1. AlexMen - 20 Ноября, 2011 - 19:46:47 - перейти к сообщению
Всех приветствую!

Прошу взглянуть, где у меня ошибка в функции 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.  


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

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

Буду благодарен за конструктивные ответы.
2. sKaa - 20 Ноября, 2011 - 19:49:19 - перейти к сообщению
echo mysql_error()
3. AlexMen - 20 Ноября, 2011 - 19:54:24 - перейти к сообщению
Спасибо Улыбка
Вывелось следующее:

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

Значит, ошибка в кавычках? Или как?
4. sKaa - 20 Ноября, 2011 - 20:02:44 - перейти к сообщению
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` = ...
5. Runet4ik - 20 Ноября, 2011 - 20:05:04 - перейти к сообщению
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 '"

Вот наверно будет вернее:
PHP:
скопировать код в буфер обмена
  1. WHERE region like '".$region."'"
6. Bio man - 20 Ноября, 2011 - 20:09:21 - перейти к сообщению
поле data какой тип данных имеет?
7. AlexMen - 20 Ноября, 2011 - 20:13:32 - перейти к сообщению
Точка перед переменной не помогла.

В поле 'дата' тип данных - 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."'"

вообще выдается ошибка синтаксиса.
8. sKaa - 20 Ноября, 2011 - 20:19:28 - перейти к сообщению
либо измени тип поля data на varchar либо сохраняй туда метку времени а не что попало.
метка времени сдерствами пхп time()
средствами MySQL : "SELECT UNIX_TIMESTAMP"
9. Bio man - 20 Ноября, 2011 - 20:23:57 - перейти к сообщению
AlexMen, зачем использовать LIKE для жесткого сравнения? юзай =
Цитата:
WHERE region = '{$region}'"

а дату либо записывай правильно либо пиши timestamp... либо varchar...
10. AlexMen - 20 Ноября, 2011 - 20:27:08 - перейти к сообщению
После изменения типа поля на varchar вообще абракадабра получается, ошибок полна страница.

Поле "data" мне нужно не для определения текущей даты, а для жесткого задания даты мероприятия (в данном случае - 20 декабря 2011 г.) Не хватает часов:минут:секунд?
11. Runet4ik - 20 Ноября, 2011 - 20:30:01 - перейти к сообщению
Попробуй так:
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'");
12. tuareg - 20 Ноября, 2011 - 20:31:02 - перейти к сообщению
А зачем столько 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
13. AlexMen - 20 Ноября, 2011 - 20:33:30 - перейти к сообщению
Runet4ik, так пробовал - бесполезно.

tuareg, сейчас попробую.
14. tuareg - 20 Ноября, 2011 - 20:36:44 - перейти к сообщению
Если не получится выложите структуру таблицы и данные которые пытаетесь внести
15. Bio man - 20 Ноября, 2011 - 20:42:15 - перейти к сообщению
и в правду сетов много!

 

Powered by ExBB FM 1.0 RC1