2016-12-18 34 views
0

のindex.phpにメンバ関数はfetchAll()を呼び出します。不明なエラー:ブール

$db = new Db(); 
$param = [':name' => 'Alex']; 
$data = $db->sql('select * from test where name = :name',$param)->query(); 
var_dump($data); 

とエラーが表示されます。

Fatal error: Uncaught Error: Call to a member function fetchAll() on boolean 

をdb.php

public function sql($sql,array $params = null) 
    { 
     $sql = $this->connection->prepare($sql); 

     if($params){ 
      foreach ($params as $key => $param) { 
       $sql->bindParam($key, $param); 
      } 
     } 

     $this->statement = $sql; 
     return $this; 
    } 


    public function query($type = 1) 
    { 
     $statement = $this->statement->execute(); 

     return ($type == 1) ? $statement->fetchAll(static::$DB_FETCH) : $statement->fetch(static::$DB_FETCH); 
    } 

の場合私はsql()メソッドを実行し、その中のデータを実行()とfetch()、それは本当にデータを取得することができますが、私はエラーを取得するクエリ()メソッドにexecute()とfetch() ssage、任意のアイデア? ;

+1

'false'はクエリが失敗したことを意味し、エラーを見るにはhttp://php.net/manual/en/pdostatement.errorinfo.phpを使用してください。 –

+0

@u_mulder私はvar_dump(ステートメント)とgeture /アプリケーション/MAMP/htdocs/Test/Program/Component/Db.php:60:boolean true – Fan

+0

コメントを__please__ –

答えて

2

を試してみてください。この行の :

$statement = $this->statement->execute(); 

​​方法がPDOStatement::executeあります。 これは署名です

public bool PDOStatement::execute ([ array $input_parameters ]) 

つまり、ブール値を返します。 あなたの間違いは、ブール値でfetchAll()を呼び出そうとしていますか?

エラーメッセージの詳細については、this pageを参照してください。

0

は、コードに誤りがあり、この

public function query($sql,array $params = null,$type = 1) 
    { 
     $sql = $this->connection->prepare($sql); 

     if($params){ 
      foreach ($params as $key => $param) { 
       $sql->bindParam($key, $param); 
      } 
     } 

     $this->statement = $sql; 

     $statement = $this->statement->execute(); 

     return ($type == 1) ? $statement->fetchAll(static::$DB_FETCH) : $statement->fetch(static::$DB_FETCH); 
    } 

そして

$data = $db->query('select * from test where name = :name',$param); 
+0

このケースは良いですが、私はまだ私が作った間違いを理解することはできません。 – Fan

+0

ステートメントを返す方が良いです。あなたの機能をより柔軟で便利にする –

関連する問題