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 :: Невозможность редактирования данных в базе данных

 PHP.SU

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


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

> Описание: Проблема с редактированием
Mister
Отправлено: 02 Марта, 2008 - 18:53:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


в общем проблема такая, в таблице редактируется только первая запись, все остальные не редкатируются. При этом ошибки никакой нет, все параметры передаются без каких-либо проблем, в чём причина не могу понять.

Код скрипта обработчика:
PHP:
скопировать код в буфер обмена
  1. $query= mysql_query("update 'lichnie'
  2.                                         set
  3.                                         familia=$_POST[familia]',
  4.                                         name='$_POST[name]',
  5.                                         otchestvo='$_POST[otchestvo]',
  6.                                         password='$_POST[password]',
  7.                                         data_roz='$_POST[data_roz]',
  8.                                         mesto_roz='$_POST[mesto_roz]',
  9.                                         semein='$_POST[semein]',
  10.                                         deti='$_POST[deti]',
  11.                                         propiska='$_POST[propiska]',
  12.                                         tel_dom='$_POST[tel_dom]',
  13.                                         tel_rab='$_POST[tel_rab]',
  14.                                         tel_mob='$_POST[tel_mob]',
  15.                                         obrazovanie='$_POST[obrazovanie]',
  16.                                         rabota_v_kspu='$_POST[rabota_v_kspu]',
  17.                                         stepen='$_POST[stepen]',
  18.                                         staz='$_POST[staz]',
  19.                                         disciplin='$_POST[disciplin]',
  20.                                         umr='$_POST[umr]',
  21.                                         publikac='$_POST[publikac]',
  22.                                         umk='$_POST[umk]'
  23.                                         where id_prepod='$_POST[id_prepod]' LIMIT 1;");

Переменная $id_prepod доходит, но данные не изменяются. Подскажите в чём причина?


-----
..я не специалист, а только учусь
 
 Top
Dastar
Отправлено: 02 Марта, 2008 - 19:45:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Попытайтесь изменить запрос воть так:
mysql_query(ЗАПРОС) or die(mysql_error());
Помогает часто найти ошибки.


-----
Не знаешь - молчи.
 
 Top
Eihwaz
Отправлено: 02 Марта, 2008 - 19:45:36
Post Id


Гость


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


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




Дык, кхм... LIMIT 1 же-ж...
2 Dastar:
Есть LIMIT при UPDATE, но только если не обновляются сразу несколько таблиц:
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]0/en/update[dot]html

(Отредактировано автором: 02 Марта, 2008 - 19:49:48)

 
 Top
RomAndry Администратор
Отправлено: 02 Марта, 2008 - 20:53:28
Post Id



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


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


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




familia=$_POST[familia]', отсутствует кавычка!
на будущее делайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $sql = "UPDATE .....";
  4. $res = mysql_query($sql) or die (mysql_error());
  5. ?>
  6.  

в этом случае предварительно можно посмотреть:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $sql = "UPDATE .....";
  4. echo $sql;
  5. $res = mysql_query($sql) or die (mysql_error());
  6. ?>
  7.  
 
My status
 Top
EuGen Администратор
Отправлено: 03 Марта, 2008 - 10:47:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Dastar пишет:
2. А Вы уверены что в UPDATE'е есть такая вещь - LIMIT?
Лично я - нет. Да и точка-запятая лишние.

Вы уже не в первый раз даете советы, которые могут ввести в заблуждение пользователей форума. И так как Вы - модератор этого форума, то именно к Вашим советам больше прислушиваются.
Я лично не имею что-то против, но думаю, что Вам нужно особенно ответственно относится к сказанному Вами здесь на форуме. Мы все можем ошибаться, но нужно стараться избегать ошибок (например, уточнить в интернете до того, как ответить).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Mister
Отправлено: 03 Марта, 2008 - 17:29:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


В код добавил строку:

Сразу после запроса, вывел Query was empty
Я так понимаю это означает запрос пуст, но с другой стороны update разве что-нибудь выводит?.
Мне кажется он вообще сам запрос почему-то игнорирует. Даже с непоставленной какой-нибудь кавычкой он всё-равно не выдаёт ошибку.


-----
..я не специалист, а только учусь
 
 Top
Dastar
Отправлено: 03 Марта, 2008 - 19:13:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Не UPDATE выводит. Выводит mysql_query. При случае ошибки она возвращает false.
А если mysql_query вернет false, то сразу конструкция перейдет ко второй части:
or die(mysql_error()) и напишет ошибку, после чего скрипт остановится, "умрет".


-----
Не знаешь - молчи.
 
 Top
RomAndry Администратор
Отправлено: 03 Марта, 2008 - 19:48:03
Post Id



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


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


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






сюда результат выложите.
 
My status
 Top
Mister
Отправлено: 03 Марта, 2008 - 20:53:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


Пробовал и выводить результат запроса, ничего не выводит. Говорит Query was empty.
Что самое непонятное, даёт редактировать только первую запись в таблице. Там нет никаких проблем, а что с остальными не знаю.
Запрос как-будто не видит.


-----
..я не специалист, а только учусь
 
 Top
valenok
Отправлено: 03 Марта, 2008 - 21:19:35
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Извини, не понял где имеено результат вополнения


-----
Truly yours, Sasha.
 
My status
 Top
Mister
Отправлено: 04 Марта, 2008 - 06:33:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


valenok пишет:
Извини, не понял где имеено результат вополнения


Результат выполнения в моём первом сообщении, но на всякий случай привожку ещё раз с учётом предложений
PHP:
скопировать код в буфер обмена
  1. $query= mysql_query("UPDATE 'lichnie'
  2.                                         set
  3.                                         familia='$_POST[familia]',
  4.                                         name='$_POST[name]',
  5.                                         otchestvo='$_POST[otchestvo]',
  6.                                         password='$_POST[password]',
  7.                                         data_roz='$_POST[data_roz]',
  8.                                         mesto_roz='$_POST[mesto_roz]',
  9.                                         semein='$_POST[semein]',
  10.                                         deti='$_POST[deti]',
  11.                                         propiska='$_POST[propiska]',
  12.                                         tel_dom='$_POST[tel_dom]',
  13.                                         tel_rab='$_POST[tel_rab]',
  14.                                         tel_mob='$_POST[tel_mob]',
  15.                                         obrazovanie='$_POST[obrazovanie]',
  16.                                         rabota_v_kspu='$_POST[rabota_v_kspu]',
  17.                                         stepen='$_POST[stepen]',
  18.                                         staz='$_POST[staz]',
  19.                                         disciplin='$_POST[disciplin]',
  20.                                         umr='$_POST[umr]',
  21.                                         publikac='$_POST[publikac]',
  22.                                         umk='$_POST[umk]'
  23.                                         where id_prepod='$_POST[id_prepod]' LIMIT 1;");
  24.                                         echo $query;
  25. $res = mysql_query($query) or die (mysql_error());

Он запрос этот игнорирует совсем. А редатировать можно только первую запись из всех. Ведь если что-то не правильно в запросе, не редактировалась бы ни одна запись?


-----
..я не специалист, а только учусь
 
 Top
RomAndry Администратор
Отправлено: 04 Марта, 2008 - 08:38:45
Post Id



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


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


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




1. where id_prepod=$_POST[id_prepod]
2. Всегда необходимо обрабатывать пришедшее от юзера иначе жди беды
3. вместо $_POST[umk] применять $_POST['umk'] а значит использовать контактекацию
ты так и не привел в студию результат выполнения команды echo
без этого в топике начинается флуд
 
My status
 Top
Mister
Отправлено: 04 Марта, 2008 - 09:34:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


RomAndry пишет:
1. where id_prepod=$_POST[id_prepod]
2. Всегда необходимо обрабатывать пришедшее от юзера иначе жди беды
3. вместо $_POST[umk] применять $_POST['umk'] а значит использовать контактекацию
ты так и не привел в студию результат выполнения команды echo
без этого в топике начинается флуд

По результатам команды echo выдаёт только что переменная пуста. Данные я обрабатываю, здесь чтобы не загромождать форум. А запрос он вообще игнорирует. К тому же первую запись он обрабатывает нормально. Меня это больше всего интересует, почему так?

(Отредактировано автором: 04 Марта, 2008 - 09:37:19)



-----
..я не специалист, а только учусь
 
 Top
Eihwaz
Отправлено: 04 Марта, 2008 - 09:44:49
Post Id


Гость


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $sql = "UPDATE 'lichnie'
  4.                    SET
  5.                    familia = ".$_POST['familia'].",
  6.                    name = ".$_POST['name'].",
  7.                    otchestvo = ".$_POST['otchestvo'].",
  8.                    password = ".$_POST['password'].",
  9.                    data_roz = ".$_POST['data_roz'].",
  10.                    mesto_roz = ".$_POST['mesto_roz'].",
  11.                    semein = ".$_POST['semein'].",
  12.                    deti = ".$_POST['deti'].",
  13.                    propiska = ".$_POST['propiska'].",
  14.                    tel_dom = ".$_POST['tel_dom'].",
  15.                    tel_rab = ".$_POST['tel_rab'].",
  16.                    tel_mob = ".$_POST['tel_mob'].",
  17.                    obrazovanie = ".$_POST['obrazovanie'].",
  18.                    rabota_v_kspu = ".$_POST['rabota_v_kspu'].",
  19.                    stepen = ".$_POST['stepen'].",
  20.                    staz = ".$_POST['staz'].",
  21.                    disciplin = ".$_POST['disciplin'].",
  22.                    umr = ".$_POST['umr'].",
  23.                    publikac = ".$_POST['publikac'].",
  24.                    umk = ".$_POST['umk']."
  25.                    WHERE id_prepod = ".$_POST['id_prepod']."";
  26. $result = mysql_query($sql) or die (mysql_error());
  27. ?>
  28.  

(Добавление)
Mister пишет:
$query= mysql_query("UPDATE 'lichnie' $res = ...

и
Mister пишет:

mysql_query($query) or die (mysql_error());

Это зачем?

(Отредактировано автором: 04 Марта, 2008 - 10:16:21)

 
 Top
Mister
Отправлено: 04 Марта, 2008 - 10:13:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


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

[+]


Ну мне здесь так предложили проверить где ошибка. Ошибку он и вправду показал, т.е. массив пуст.


-----
..я не специалист, а только учусь
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB