Многократный запрос mysql, приводящий к нулевому возвращению

Guilherme Garcia da Rosa спросил: 14 ноября 2017 в 06:14 в: php

При выполнении функции PHP с использованием двух запросов mysql, второй возвращает ноль, чего не должно быть, так как они оба работают в запросе SQL-запроса phpmyadmin.

Вот функция:

  public static function getStates($countryId) {
     try {
       $query    = "SELECT * FROM `Apostas` WHERE `idConfronto` = ".$countryId;
       $result = dbconfig::run($query);
       if(!$result) {
         throw new exception("Confronto invalido.");
       }
       $res = array();
       while($resultSet = mysqli_fetch_assoc($result)) {
        $sql2   = "SELECT * FROM `Mercados` WHERE `idMercado` = ".$resultSet["idMercado"];
        $result2 = dbconfig::run($sql2);
        if(!$result2) {
            throw new exception("Não há mercados.");
        }
        while ($row2 = mysqli_fetch_assoc($result2)) {
            $res[$resultSet['idMercado']] = $row2['nomeMercado'];
        }
       }
       $data = array('status'=>'success', 'tp'=>1, 'msg'=>"States fetched successfully.", 'result'=>$res);
     } catch (Exception $e) {
       $data = array('status'=>'error', 'tp'=>0, 'msg'=>$e->getMessage());
     } finally {
        return $data;
     }
   }

Первый запрос работает каждый раз, но второй идет к исключению"Não há mercados".

После отладки функции переменная $ resultSet ["idMercado"] работает и SQL-запрос также работает, но код приводит к исключению.

Что я делаю не так? Возможно, что-то с синтаксисом?

- EDIT1: по запросу, код для dbconfig :: run:

  public static function run($query) {
    try {
      if(empty($query) && !isset($query)) {
        throw new exception("Query string is not set.");
      }
      $result = mysqli_query(self::$con, $query);
      self::close();
     return $result;
    } catch (Exception $e) {
      echo "Error: ".$e->getMessage();
    }  } 

- EDIT2: как предложил Кавид, выполнить все запросы перед закрытием соединения, вот как получилась функция:

public static function getStates($countryId) {
     try {
       $query    = "SELECT * FROM `Apostas` WHERE `idConfronto` = ".$countryId;
       $result = $conn->query($query);
       if(!$result) {
         throw new exception("Confronto invalido.");
       }
       $res = array();
       if ($result->num_rows > 0) {
        while ($resultSet = $result->fetch_assoc()) {
            $sql2   = "SELECT * FROM `Mercados` WHERE `idMercado` = ".$resultSet['idMercado'];
            $result2 = $conn->query($sql2);
            if ($result2->num_rows > 0) {
                while ($row2 = $result2->fetch_assoc()) {
                    $res[$resultSet['idMercado']] = $row2['nomeMercado'];
                }
            }
           }
       }
       $data = array('status'=>'success', 'tp'=>1, 'msg'=>"States fetched successfully.", 'result'=>$res);
     } catch (Exception $e) {
       $data = array('status'=>'error', 'tp'=>0, 'msg'=>$e->getMessage());
     } finally {
        return $data;
     }
     $conn->close();
   }

Теперь она дает мне код ошибки 500 "Внутренняя ошибка сервера"

0 ответов