Перейти к содержимому


Партнерская программа Kredov

Mysql_query не правильно делает запрос

#1 alex159

alex159
  • Пользователь
  • 492 сообщений
  • Репутация: 32
0

Отправлено 03 Май 2014 - 17:00

Пишу суда потому что уже все перепробовал.
Есть немного кривой код

if($myrow['manager'] == 0) {
mysql_query("UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'");
 } 

Запрос выполняется, возвращает true но в колонку  status не хочет вставляться цифра 1, нечего. 
Делал отладку, выводил запрос на экран все правильно.

Но в колонке status нечего не хочет меняться.  Вставлял запрос на прямую в phpmyadmin там все нормально.

Что не так, уже час сижу не могу понять. 

 

 

 

  • 0

#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 03 Май 2014 - 18:35


Делал отладку, выводил запрос на экран все правильно.

А выполнить этот выведенный запрос в phpMyAdmin пробовали? Если он выполнится там, значит, должен выполниться и в запросе. Если же не выполнится, тогда сервер должен показать ошибку:

if($myrow['manager'] == 0) {
	$query = "UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'";
	exit($query); // распечатанный запрос пробуем выполнить из phpMyAdmin
	mysql_query($query);
}

Но в колонке status нечего не хочет меняться

А поля manager и time_open, я так понимаю, при этом обновляются без проблем?

 


Запрос выполняется, возвращает true

То, что в результате выполнения запроса возвращается true, еще не значит, что запрос выполнился так, как мы задумали, т.е. не значит, что что-то изменилось в БД после запроса. Для проверки правильно использовать функцию mysql_affected_rows(), примерно так:

if($myrow['manager'] == 0) {
	$query = "UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'";
	mysql_query($query);
	if( mysql_affected_rows() > 0 ){
		$res = "Запрос что-то обновил";
	}else{
		$res = "Запрос ничего не изменил";
	}
}

Сообщение отредактировал matroskin8: 03 Май 2014 - 18:42

  • 0


#3 alex159

alex159
    Topic Starter
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 03 Май 2014 - 19:01


А выполнить этот выведенный запрос в phpMyAdmin пробовали? Если он выполнится там, значит, должен выполниться и в запросе. Если же не выполнится, тогда сервер должен показать ошибку:

в phpmyadmin все нормально,

А поля manager и time_open, я так понимаю, при этом обновляются без проблем?

да


  • 0

#4 alex159

alex159
    Topic Starter
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 03 Май 2014 - 21:00

есть варианты? 


  • 0

#5 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 03 Май 2014 - 22:15

В условие, которое указано выше:

if($myrow['manager'] == 0) {
	$query = "UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'";
	exit($query); // распечатанный запрос пробуем выполнить из phpMyAdmin
}

заходим? Т.е. на экран действительно распечатывается запрос, который вы затем копируете оттуда и выполняется из PMA? Если да, то тогда несколько странная ситуация... просто не может быть того, чтобы запрос введенный вручную, выполнился и этот же запрос, отправленный из кода - не выполнился... быть может где-то в коде далее есть еще один запрос, который затем обновляет еще раз поле status? Чтобы исключить этот вариант, можно изменить код к такому:

if($myrow['manager'] == 0) {
	$query = "UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'";
	mysql_query($query);
        exit;
}

Если и после этого ситуация останется прежней, т.е. значение поля status не изменится на 1, тогда можете скинуть мне в личку доступ к вашему компьютеру по TeamViewer и я завтра попробую посмотреть ваше приложение.


Сообщение отредактировал matroskin8: 03 Май 2014 - 22:16

  • 0


#6 alex159

alex159
    Topic Starter
  • Пользователь
  • 492 сообщений
  • Репутация: 32

Отправлено 04 Май 2014 - 20:27


if($myrow['manager'] == 0) { $query = "UPDATE `list` SET `manager`='$id',`status`='1',`time_open`='$time_open' WHERE `id`='$id_p'"; mysql_query($query);     exit; }

Спасибо большое, действительно дальше было обновление этого же столбца на 0) 
 
  • 0

#7 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 04 Май 2014 - 22:04

Пожалуйста)


  • 0



Оформление форума – IPBSkins.ru