2013-08-30 33 views
9

没有行我有一个PDO功能:价值回归时PDO

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

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

当我执行返回的行(或以上)选择查询,它将返回例如:

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

当查询失败(例如,如果我有一个错误的语法),它将返回FALSE。

但是,如果在查询中没有找到行,它也会返回FALSE。

因此,查询中的错误返回值和没有行都将返回FALSE。这怎么可能?我只需要在查询出现错误时才返回FALSE,并且在没有结果时我需要返回NULL。我的功能有问题吗?

谢谢!

+1

它有助于阅读本手册:http://php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement。提取返回值 – deceze

回答

13

如果未找到任何行,则PDO :: fetch返回false。这是事实。因此,改变你的函数:

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

他想在没有任何行时返回一个'null',而不是'false'。 – PhoneixS

+0

@PhoneixS它没有任何意义,所以只是解雇这样一个奇思妙想:) –