0

次の方法の実装に問題があります。

private function query($statement, $params = array(), $name = ""){

    try{
        $this->prepare($statement, $name);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }   
    try{
        return $this->execute($name, $params);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }
}

2 番目の try ブロックは、呼び出された別のメソッドから値を返す必要があります。私はそれを次のように呼んでいます:

$resultset = $db->select('SELECT * FROM tabelle WHERE "ID" > $1', array(1));
var_dump($resultset);

NULL を取得します。
try ブロック内の値を var_dump すると、結果が得られます。

private function query($statement, $params = array(), $name = ""){

    try{
        $this->prepare($statement, $name);
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }   
    try{
        var_dump($this->execute($name, $params));
    }catch (Exception $e){
        echo 'Exception: ',  $e->getMessage(), "\n";
    }
}

array(3) { ["ID"]=> string(1) "2" ["name"]=> string(13) "name1" ["time"]=> string(26) "2012-09-11 20:23:38.854918" } ヌル

私が間違っていることは何ですか?

$db->select と投稿されたメソッドの間の部分を編集します。

public function select($statement, $params = array(), $name){
  $this->setQueryType("select"); // just a setter
  return $this->query($statement, $params, $name);
}
4

1 に答える 1

0

executeからの戻り値を保存し、メソッドの最後に返し、それが機能するかどうかを確認してみてください。

private function query($statement, $params = array(), $name = ""){
  $return = false;
  try{
    $this->prepare($statement, $name);
    $return = $this->execute($name, $params);
  }
  catch (Exception $e){
    echo 'Exception: ',  $e->getMessage(), "\n";
  }
  return $return;
}
于 2012-09-11T22:19:12.770 に答える