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 :: Версия для печати :: Невозможность редактирования данных в базе данных
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Невозможность редактирования данных в базе данных

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

1. Mister - 02 Марта, 2008 - 18:53:57 - перейти к сообщению
в общем проблема такая, в таблице редактируется только первая запись, все остальные не редкатируются. При этом ошибки никакой нет, все параметры передаются без каких-либо проблем, в чём причина не могу понять.

Код скрипта обработчика:
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 доходит, но данные не изменяются. Подскажите в чём причина?
2. Dastar - 02 Марта, 2008 - 19:45:28 - перейти к сообщению
Попытайтесь изменить запрос воть так:
mysql_query(ЗАПРОС) or die(mysql_error());
Помогает часто найти ошибки.
3. Eihwaz - 02 Марта, 2008 - 19:45:36 - перейти к сообщению
Дык, кхм... LIMIT 1 же-ж...
2 Dastar:
Есть LIMIT при UPDATE, но только если не обновляются сразу несколько таблиц:
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]0/en/update[dot]html
4. RomAndry - 02 Марта, 2008 - 20:53:28 - перейти к сообщению
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.  
5. EuGen - 03 Марта, 2008 - 10:47:02 - перейти к сообщению
Dastar пишет:
2. А Вы уверены что в UPDATE'е есть такая вещь - LIMIT?
Лично я - нет. Да и точка-запятая лишние.

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

Сразу после запроса, вывел Query was empty
Я так понимаю это означает запрос пуст, но с другой стороны update разве что-нибудь выводит?.
Мне кажется он вообще сам запрос почему-то игнорирует. Даже с непоставленной какой-нибудь кавычкой он всё-равно не выдаёт ошибку.
7. Dastar - 03 Марта, 2008 - 19:13:30 - перейти к сообщению
Не UPDATE выводит. Выводит mysql_query. При случае ошибки она возвращает false.
А если mysql_query вернет false, то сразу конструкция перейдет ко второй части:
or die(mysql_error()) и напишет ошибку, после чего скрипт остановится, "умрет".
8. RomAndry - 03 Марта, 2008 - 19:48:03 - перейти к сообщению


сюда результат выложите.
9. Mister - 03 Марта, 2008 - 20:53:43 - перейти к сообщению
Пробовал и выводить результат запроса, ничего не выводит. Говорит Query was empty.
Что самое непонятное, даёт редактировать только первую запись в таблице. Там нет никаких проблем, а что с остальными не знаю.
Запрос как-будто не видит.
10. valenok - 03 Марта, 2008 - 21:19:35 - перейти к сообщению
Извини, не понял где имеено результат вополнения
11. Mister - 04 Марта, 2008 - 06:33:56 - перейти к сообщению
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());

Он запрос этот игнорирует совсем. А редатировать можно только первую запись из всех. Ведь если что-то не правильно в запросе, не редактировалась бы ни одна запись?
12. RomAndry - 04 Марта, 2008 - 08:38:45 - перейти к сообщению
1. where id_prepod=$_POST[id_prepod]
2. Всегда необходимо обрабатывать пришедшее от юзера иначе жди беды
3. вместо $_POST[umk] применять $_POST['umk'] а значит использовать контактекацию
ты так и не привел в студию результат выполнения команды echo
без этого в топике начинается флуд
13. Mister - 04 Марта, 2008 - 09:34:34 - перейти к сообщению
RomAndry пишет:
1. where id_prepod=$_POST[id_prepod]
2. Всегда необходимо обрабатывать пришедшее от юзера иначе жди беды
3. вместо $_POST[umk] применять $_POST['umk'] а значит использовать контактекацию
ты так и не привел в студию результат выполнения команды echo
без этого в топике начинается флуд

По результатам команды echo выдаёт только что переменная пуста. Данные я обрабатываю, здесь чтобы не загромождать форум. А запрос он вообще игнорирует. К тому же первую запись он обрабатывает нормально. Меня это больше всего интересует, почему так?
14. Eihwaz - 04 Марта, 2008 - 09:44:49 - перейти к сообщению
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());

Это зачем?
15. Mister - 04 Марта, 2008 - 10:13:11 - перейти к сообщению
Ну мне здесь так предложили проверить где ошибка. Ошибку он и вправду показал, т.е. массив пуст.

 

Powered by ExBB FM 1.0 RC1