Может извлекать данные внутри класса, но при возврате отправляет только логическое значение php PDO? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать класс базы данных, используя PDO, это мой первый раз, используя pdo, поэтому, пока я строю, я застрял в этой проблеме, я смог создать и подключиться к базе данных, используя класс, но проблема в том, когда я пытаюсь выполнить и извлечь ошибка возвращаемых данных говорит

Вызов функции-члена fetch () для логического значения

и все же я могу сделать это извлечение внутри класса, эта проблема возникает, только когда я пытаюсь извлечь возвращенные данные, и я повторил возвращенные данные, которые он возвращает 1

Это функция, которая пытается вернуть (не использовала параметры просто используя пустышку)

 public function init($query,$param =[]){
        if(!$this->bConnected) { $this->Connect(); }
        try{
            $stmt = $this->pdo->prepare('SELECT * FROM business');
            $stmt->execute();
            return $stmt->execute();


        }catch(Exception $e){
            echo $e->getMessage();
        }




     }

Вызов имени объекта класса - $ myobj

 $stmt = $myobj->init('SELECT * FROM business',$value);

    while($rows = $stmt->fetch(PDO::FETCH_ASSOC)){

        echo( $rows['bs_name'] ."  |" .$rows['bs_id']. "<br>");
    }

Это та же разница в коде, только внутри класса. Работа без ошибок

   public function init($query,$param =[]){
        if(!$this->bConnected) { $this->Connect(); }
        try{
            $stmt = $this->pdo->prepare('SELECT * FROM business');
            $stmt->execute();
             $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
            while($rows = $stmt->fetch(PDO::FETCH_ASSOC)){
                echo( $rows['bs_name'] ."  |" .$rows['bs_id']. "<br>");
            }

        }catch(Exception $e){
            echo $e->getMessage();
        }




     }

1 Ответ

0 голосов
/ 08 января 2019

Ваш метод возвращает результат $stmt->execute() (логическое значение, указывающее на успех / неудачу выполнения оператора, не на результаты запроса ).

$stmt = $this->pdo->prepare('SELECT * FROM business');
return $stmt->execute();

Вместо этого, чтобы метод работал так, как вы его используете, вам нужно выполнить инструкцию, а затем вернуть сам оператор, а не результат execute().

$stmt = $this->pdo->prepare('SELECT * FROM business');
$stmt->execute();
return $stmt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...