値PDO

2013-08-30 13 views
9

に行私はPDOの機能を有していない場合に返す:値PDO

function(){ 
    $success=$this->query($query, $bindvalues); 

    return ($success == true) ? $this->stmt->fetch(PDO::FETCH_ASSOC) : false; 
} 

I行(またはそれ以上)を返すSELECTクエリを実行すると、それは、例えば戻ります:

array(1) { ["Id"]=> string(1) "1" } 

クエリが失敗すると(たとえば、構文が間違っていると)、FALSEが返されます。

しかし、クエリで行が見つからない場合は、FALSEも返します。

したがって、クエリでエラーが発生し、行がない戻り値は両方ともFALSEを返します。そんなことがあるものか?クエリにエラーがある場合にのみFALSEを返す必要があり、結果がない場合などにNULLを返す必要があります。私の機能に何か間違っていますか?

ありがとうございます!

+1

を行きます。 fetch-returnvalues – deceze

答えて

13

行が見つからなかった場合、PDO :: fetchはfalseを返します。これは事実です。だからあなたの機能を変更します。http://php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement:

function(){ 
    $success = $this->query($query, $bindvalues); 
    if(!$success) { 
     //handle error 
     return false; 
    } 
    $rows = $this->stmt->fetch(PDO::FETCH_ASSOC); 
    return $rows ?: null; 
} 
+1

彼は結果のために 'null'を返そうとしています... – deceze

+0

@deceze:ヒントのためのthx。それを変更しました! –

+0

ありがとうございます!非常に簡単ですが、行が見つからない場合にPDOがfalseを返すことはわかりませんでした。私はMySQLがないと思いますか? – Jordy

-1

ここでは、それはマニュアルを読むのに役立ちます

function fetchRow($query, $bindvalues) 
{ 
    $stmt = $this->query($query, $bindvalues); 
    return $stmt->fetch(); 
} 
+0

' false'ではなく、行がないときに 'null'を返すことを望みます。 – PhoneixS

+0

@PhoneixSそれは意味がないので、ちょうどそのような気まぐれを却下する:) –