2013-08-30 10 views
9

Ho una funzione DOP:ritorno Valore senza righe DOP

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

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

Eseguendo una query di selezione che restituisce una riga (o più), si tornerà ad esempio:

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

Quando la query non riesce (se ho una sintassi sbagliata per esempio), restituirà FALSE.

Ma se non vengono trovate righe con la query, restituisce anche FALSE.

Quindi il valore restituito con un errore nella query e senza righe restituirà FALSE. Come è possibile? Devo restituire FALSE solo quando c'è un errore nella query, e ho bisogno di restituire NULL ad esempio quando non ci sono risultati. C'è qualcosa di sbagliato nella mia funzione?

Grazie!

+1

Essa aiuta a leggere il manuale: http://php.net/manual/en/pdostatement.fetch.php#refsect1-pdostatement. fetch-returnvalues ​​ – deceze

risposta

13

Se non è stata trovata alcuna riga PDO :: fetch restituisce false. Questo è un fatto. Quindi modificare la funzione:

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

Vuole restituire 'null' per nessun risultato ... – deceze

+0

@deceze: thx per il suggerimento. Cambiato! –

+0

Grazie mille! È molto semplice, ma non sapevo che PDO restituisse false quando non è stata trovata alcuna riga. Penso che MySQL no? – Jordy

-1

Qui si va

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

Vuole restituire un' null' quando non ci sono righe, non 'false'. – PhoneixS

+0

@PhoneixS non ha senso quindi basta congedare un tale capriccio :) –