FlexStat
@FlexStat

Почему запрос не обновляет таблицу в бд?

Есть такая конструкция, по нажатию кнопки должна обновляться таблица :

//запросы не стал сюда выносить, они выполняются корректно
      while (($row = mysql_fetch_array($result1))||($row1 = mysql_fetch_array($result2))||($row2 = mysql_fetch_array($resultMax))||($row3 = mysql_fetch_array($resultMin))) {
            
//присвоение переменных
            $Max = $row['stat']; 
            $ComandMax = $row['fio'];
            $SostavMax = $row['gorod'];
            $idMax = $row2['id'];
            
//сам запрос который должен обновлять таблицу records
               $result = mysql_query("UPDATE `records` SET  `comand_name` = '$ComandMax', `sostav` = '$SostavMax', `record_mx` = '$Max'  WHERE `id` = '$idMax'", $link);


В результате выполнения запроса, полям в таблице присваиваются пустые значения.

При чем если, мы проверяем значения переменных, то на выходе значения присваиваются корректно, переменные не пустые.

echo $ComandMax, $SostavMax, $Max, $idMax ;

Вероятнее, что-то с типом данных...
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
seganim
@seganim
PHP-программист, программный инженер
while (($row = mysql_fetch_array($result1))||($row1 = mysql_fetch_array($result2))||($row2 = mysql_fetch_array($resultMax))||($row3 = mysql_fetch_array($resultMin))) {


Запрос корректен только при $row = mysql_fetch_array($result1), в остальных 3 случаях $row - пустое.

Внесите проверку на пустоту и берите один из $row, $row1 и т.д. в зависимости от того,какой результат непустой.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
У Вас условие while выполняется если $row = mysql_fetch_array($result1) ИЛИ ЛЮБОЙ ИЗ ОСТАЛЬНЫХ вернет True. Возможна ситуация что
$row = mysql_fetch_array($result1);
будет False, а любой из остальных буде True. Тогда
$Max = $row['stat']; 
$ComandMax = $row['fio'];
$SostavMax = $row['gorod'];
тут вы получите ножиданный для себя результат. Может так оно и случается?
Ответ написан
Комментировать
FlexStat
@FlexStat Автор вопроса
Так смотрите в конце я делаю вывод переменных $ComandMax, $SostavMax, $Max, $idMax и они не пустые, значит условие выполняется. И если сделать чистый запрос, без переменных :

while (($row = mysql_fetch_array($result1))||($row1 = mysql_fetch_array($result2))||($row2 = mysql_fetch_array($resultMax))||($row3 = mysql_fetch_array($resultMin))) {
            
            $Max = $row['stat']; 
            $ComandMax = $row['fio'];
            $SostavMax = $row['gorod'];
            $idMax = $row2['id'];

               $result = mysql_query("UPDATE `records` SET  `comand_name` = 'test1', `sostav` = 'test2', `record_mx` = 'test3'  WHERE `id` = '1'", $link);

//тут вывожу переменные и они не пустые, присвоение срабатывает.  
echo $ComandMax, $SostavMax, $Max, $idMax ;



}


То данные в таблице records обновляются..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы