PDA

Показать полную графическую версию : [решено] mysql_query. Не работает UPDATE


Artem-Samsung
08-01-2009, 02:36
Похоже мне нужны опытные телепаты.
Реально не могу понять ничего, уже второй день.

Есть запрос в БД. Обновляет строчку в таблице.

Не работает, когда вывожу этот же сформировавшийся запрос на экран и копирую в phpmyadmin,
то работает. Ошибок Apache никаких не выдает.
Другие скрипты работают. к БД конектится сто процентов. Другие скрипты в этом же положениии выполняется, а этот нет.

Обычно я отлаживал выводом на экран а потом phpmyadmin, а сейчас даже не знаю.
Как бы отследить в чем загвоздка?

mysql_query("
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_1]', `group` = '$_POST[group_mon_1]', `room` = '$_POST[room_mon_1]'
WHERE `time` = '8:30' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_2]', `group` = '$_POST[group_mon_2]', `room` = '$_POST[room_mon_2]'
WHERE `time` = '10:25' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_3]', `group` = '$_POST[group_mon_3]', `room` = '$_POST[room_mon_3]'
WHERE `time` = '12:20' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_4]', `group` = '$_POST[group_mon_4]', `room` = '$_POST[room_mon_4]'
WHERE `time` = '14:15' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_5]', `group` = '$_POST[group_mon_5]', `room` = '$_POST[room_mon_5]'
WHERE `time` = '16:10' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
");

echo "
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_1]', `group` = '$_POST[group_mon_1]', `room` = '$_POST[room_mon_1]'
WHERE `time` = '8:30' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_2]', `group` = '$_POST[group_mon_2]', `room` = '$_POST[room_mon_2]'
WHERE `time` = '10:25' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_3]', `group` = '$_POST[group_mon_3]', `room` = '$_POST[room_mon_3]'
WHERE `time` = '12:20' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_4]', `group` = '$_POST[group_mon_4]', `room` = '$_POST[room_mon_4]'
WHERE `time` = '14:15' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
UPDATE `de_teachers_schedule`
SET `title` = '$_POST[title_mon_5]', `group` = '$_POST[group_mon_5]', `room` = '$_POST[room_mon_5]'
WHERE `time` = '16:10' and `day`= 'Понеділок' and `teacher`='$_SESSION[id]';
";

dmitryst
08-01-2009, 02:59
Artem-Samsung, ИМХО, с кодировками что-то не то (не выполняется "and")

Artem-Samsung
08-01-2009, 03:58
Добавлю. Генерируется такое чудо
UPDATE `de_teachers_schedule` SET `title` = 'Урок 2', `group` = 'ХА-51', `room` = 'аудиторія 256, 4 корпус1' WHERE `time` = '8:30' and `day`= 'Понеділок' and `teacher`='19';
UPDATE `de_teachers_schedule` SET `title` = 'Урок 2', `group` = 'ХА-61', `room` = 'аудиторія 256, 4 корпус' WHERE `time` = '10:25' and `day`= 'Понеділок' and `teacher`='19';
UPDATE `de_teachers_schedule` SET `title` = 'Урок 3', `group` = 'ХА-61', `room` = 'аудиторія 256, 4 корпус' WHERE `time` = '12:20' and `day`= 'Понеділок' and `teacher`='19';
UPDATE `de_teachers_schedule` SET `title` = 'Урок 4', `group` = 'ХА-61', `room` = 'аудиторія 256, 4 корпус' WHERE `time` = '14:15' and `day`= 'Понеділок' and `teacher`='19';
UPDATE `de_teachers_schedule` SET `title` = 'Урок 5', `group` = 'ХА-61', `room` = 'аудиторія 256, 4 корпус' WHERE `time` = '16:10' and `day`= 'Понеділок' and `teacher`='19';

dmitryst, кодировка таблицы cp1251_general_ci
Хотя вариант, поверим штатному телепату, попробую обозвать day по-английски :)

Artem-Samsung
08-01-2009, 04:17
Поменял на английское, заменил and на AND
Та же картина.
Что интересно, при тех же условиях, выполняется такое:


$sql_title_mon_1 = mysql_query("SELECT `id`, `title`, `group`, `room` FROM de_teachers_schedule WHERE `time`='8:30' AND
`day`='friday' AND `teacher`='".$_SESSION['id']."'");
$title_mon_1 = mysql_fetch_array($sql_title_mon_1);


И отображается замечательно:

http://kxtp.deykun.com/index.php?teacher=19&page=1

Вообщем подскажите, пожалуйста, какие есть методы отследить глюк?

Sham
08-01-2009, 13:29
Artem-Samsung, mysql_query работает только с одиночными запросами, и разделители в конце не приветствуются (RTM). Т.е. в одном запросе прокатит только один UPDATE/INSERT/SELECT... Нужно составить один запрос с многочисленными действиями, либо несколько mysql_query подряд...

Artem-Samsung
09-01-2009, 01:26
Sham, спасибо, тогда все сейчас переделаю )




© OSzone.net 2001-2012