Метод some_method () всегда возвращает false - PullRequest
1 голос
/ 09 мая 2020

У меня есть следующие два класса, называемые One и Two соответственно. В Class One есть база данных. Где метод connect() возвращает переменную (свойство), которая является обработчиком базы данных ($dbh). Я использовал connect() буквально сотни раз, и он работает, как ожидалось. Здесь тоже (в методе query()) должно работать корректно. Теперь работа, которую должен выполнить метод query(), - это подготовить оператор (в данном случае $query) и выполнить его, после чего он извлекает данные в виде ассоциативного массива и возвращает данные. Я вызываю этот метод несколькими методами, и он отлично работает во всех, кроме метода some_method() в классе 2.

class One {
  protected function query($sql, $params=[]){
    $query = $this->connect()->prepare($sql); // Method connect() returns database handler ($dbh)
    $query->execute($params);
    $storage = $query->fetch(); // Fetch as an associative array
    return $storage;
  }
}

Теперь здесь, в some_method() в классе 2, метод query() (из класса One), вызывается там, где объявляются переменная $sql, а также ассоциативный массив $params, как показано в приведенном ниже коде. Все, что нужно сделать этому методу, - это вызвать метод query() с параметрами $sql и $params и сохранить результат в $storage. Если $storage==false, return false и если $storage имеет значение, отличное от false, return true. И этот результат (т.е. истина или ложь) зависит от того, есть ли в базе данных запись в столбце class_date , как указано в $params['date']. Теперь возникает проблема, независимо от того, имеет ли база данных это значение в этом столбце, метод some_method() всегда возвращает false. Я не знаю, какую ошибку я здесь делаю. Кто-нибудь может указать на это, пожалуйста.

class Two extends class One{
  public function some_method($date){
    $sql = 'SELECT class_date FROM table_name WHERE id=:id AND class_date=:date';
    $params = [
      'id' => $this->user_id,
      'date' => $date
    ];
    $array = $this->query($sql, $params);
    return ($array==false) ? false : true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...