Вопрос по обновлению записей в Mysql [РЕШЕНО]

Все привет! я столкнулся с такой проблемой, при обновлении записи в таблице одними и теми же значениями не чего не происходит

Запрос из XXX.mapper.class.php
public function UpdataZtovars($price,$stock,$weight,$id,$name) {
		$sql = "UPDATE " . Config::Get('plugin.zakaz.table.ztovar_sklad')."
		SET
			pricep=?d,
			kolvo=?d,
			weight=?d,	
			name=?
		WHERE
			article=?
		";
		if ($this -> oDb -> query($sql,$price,$stock,$weight,$name,$id)) {
			return true;
		}
		return false;
	}



выполняю

UPDATE sklad_ztovar_sklad
		SET
			pricep=23,
			kolvo=44,
			weight=171,	
			name='Тарелка'
		WHERE
			article='18159'


Если просто выполнять этот запрос в mysql, то можно выполнять хоть сколько раз, но из под сайта только один раз.

$config['sys']['cache']['use'] = false;
$config['compress']['js']['merge'] = false;


может что то не так делаю?

[РЕШЕНИЕ]

Сделать в таблицу поле unix — и туда помещать unix время

14 комментариев

avatar
Смею предположить что движок Кеширует обновления и если данные не изменились то оно его просто не выполняет запрос
avatar
$config['sys']['cache']['use'] = false;
$config['compress']['js']['merge'] = false;
avatar
я не о движке ЛС а о dbSimple
avatar
— самом движке который делает всю грязную работу по доступу в БД
avatar
а подскажи где такой кеш?

файл который выполняет запросы я нашел
\engine\lib\external\DbSimple\Generic.php
avatar
$this->oDb->query отдает при UPDATE запросе количество измененных записей. Следовательно, при одинаковых запросах будет отдаваться 0 или false (точно не уверен).
avatar
просто он даже не выходит из запроса, и не возвращает не чего
avatar
просто он даже не выходит из запроса, и не возвращает не чего
Не выходит — это зависает что ли?
avatar
наверно, зависает, просто после выполнения этого запроса вывожу

$this->Message_AddErrorSingle($this->Lang_Get('plugin.zakaz.prov_param',array('param'=>$TovarId)),$this->Lang_Get('error'));
		return;


это выводит вплывающюю окно, но оно не выполняется,
первый раз выводится, при повторном нажатии нет
avatar
а приведите, пожалуйста, полный код
avatar
ActionTovar.class.php

protected function UpTovar() {
		/**
		 * Устанавливаем формат Ajax ответа
		 */
		$this->Viewer_SetResponseAjax('json');
		/**
		 * Пользователь авторизован?
		 */
		if (!$this->oUserCurrent) {
			$this->Message_AddErrorSingle($this->Lang_Get('need_authorization'),$this->Lang_Get('error'));
			return;
		}

		$TovarId=getRequestStr('TovarId',null,'post');
		 $k=0;



		  $aZTovars = $this->PluginZakaz_ModuleTovar_ArticleToID($TovarId);


			foreach($aZTovars as $oZTovars){

				if(!$this->PluginZakaz_ModuleTovar_InfoUPTovar($oZTovars->getArticle(),$oZTovars->getId()))
				{
					$this->Message_AddErrorSingle($this->Lang_Get('plugin.zakaz.prov_param',array('param'=>$k)),$this->Lang_Get('error'));
					return;
				}
		$this->Message_AddErrorSingle($this->Lang_Get('plugin.zakaz.prov_param',array('param'=>$TovarId)),$this->Lang_Get('error'));
		return;

			$k=$k+1;

			}

			$this->Message_AddNoticeSingle($this->Lang_Get('plugin.zakaz.topic_update'),$this->Lang_Get('attention'));
			$this->Viewer_AssignAjax('bState',true);
	}


Tovar.class.php

public function InfoUPTovar($TidM,$id) {

		$price = 1.2;
		$stock = 10;
		$weight = 30;
		$name = 'Тарелка';

			
			if($this -> oMapperTovar -> UpdataZtovars($price,$stock,$weight,$TidM,$name)) {
				$data = $this -> oMapperTovar -> InsertTovarSkladStat($price,$stock,$id,time());
			}
			return $data;
	}


Mapper выше
avatar
public function InfoUPTovar($TidM,$id) {

		$price = 1.2;
		$stock = 10;
		$weight = 30;
		$name = 'Тарелка';

			
			if($this -> oMapperTovar -> UpdataZtovars($price,$stock,$weight,$TidM,$name)) {
				$data = $this -> oMapperTovar -> InsertTovarSkladStat($price,$stock,$id,time());
			}
			return $data;
	}

$data вернется с данными только первый раз (когда они будут отличатся — о чем я писал выше), в противном случае переменная будет неопределена
avatar
а как понять что данные не изменились, не буду я ведь сравнивать их, хочу просто каждый раз записывать данные. такое можно сделать?
avatar
[РЕШЕНИЕ]

Сделать в таблицу поле unix — и туда помещать unix время
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.