Странное выполнение запроса

zdimon

Новичок
Странное выполнение запроса

Возможно мой вопрос покажется абсурдным однако несколько дней бьюсь и не могу разрешить такую ситуацию:

Есть участок кода
PHP:
if($row['from_id']!=$_SESSION['user_id']) {

						
	$ss2="update messages set status=6 where message_id=$id"; 
	$db->query($ss2);
	

      	}
Тут происходит незамысловатая проверка на хозяина сообщения и апдейт строки.
Юзер пишет сообщение другому пользователю и потом его удаляет (при этом флаг status должен не изменяться для того чтоб адресат смог увидеть письмо у себя)
если адресат удаляет письмо то status устанавливается в цифру 6.



Так вот этот апдейт происходит даже когда скрипт не заходит в эту ветку (при удалении письма его хозяином).

Если закоментировать строку $db->query($ss2), то апдейта нет (значит он только в этом месте)
Если поставить die после $db->query($ss2), то скрипт не "умирает" (значит в ветку не заходит)

И еще один интересный нюанс, если руками в базе скинуть флаг status, то последующяя работа скрипта нормальная (т.е. апдейта нет).
А если строку в базе не трогать руками то последующий апдейт флага status происходит в любом случае.

Я уже свой мозг почти доел

:(
 

Армян

Новичок
Если закоментировать строку $db->query($ss2), то апдейта нет (значит он только в этом месте)
Если поставить die после $db->query($ss2), то скрипт не "умирает" (значит в ветку не заходит)
аномалия О_о. такого ведь не может быть, только если в query() нету die, конечно
 

weregod

unserializer
для проверки захождения в ветку стоит ставить die($sql) до $db->query()
 

DiMA

php.spb.ru
Команда форума
к sql проблема не имеет ни малейшего отношения

в качестве теста поставь echo 1, 2, 3 (либо запись в лог) до, внутри и после условия

если $db поддерживает, сделай $db->debug=1 и смотри последовательность всех запросов и источника их вызова
 
Сверху