2012-03-01 26 views
15

Come posso verificare se la seguente query è stata eseguita correttamente?Come sapere quando la query è stata eseguita correttamente con PHP PDO?

$STH = $this->_db->prepare("UPDATE UserCreds SET 
    VerificationString=:newVerificationString, ExpiryDate=:expiryDate 
    WHERE UserID = :userID;"); 
$STH->execute($params); 

So che posso usare lastInsertId() quando sto aggiunta di nuove righe, ma per quanto riguarda gli aggiornamenti e SELECT?

+0

@Pekka No, posso ottenere messaggi di errore più che bene. –

+4

http://de.php.net/manual/en/pdostatement.execute.php dice: * Restituisce TRUE in caso di successo o FALSE in caso di errore. * - Collegalo quindi a una variabile, ad es. '$ successo = $ STH-> esegui ($ params);' e controlla quella variabile rispetto a 'true' o' false'. – Quasdunk

risposta

35

I rendimenti executetrue in caso di successo e false in caso di fallimento.

From Docs:

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.


Così si può fare in modo di query ha funzionato con successo come:

if ($STH->execute($params)) 
{ 
    // success 
} 
else 
{ 
    // failure 
} 
+0

Quindi qualcosa come 'if ($ STH-> execute ($ params)) {echo" Success! "; } else {echo "Failure!"; } '? –

+0

@DjangoReinhardt: Sì, hai ragione :) È anche possibile memorizzare il risultato di 'execute' in una variabile se è necessario utilizzarlo in seguito. – Sarfraz

+0

Grazie per il chiarimento! –

15

execute() restituisce vero/falso sulla base di successo/insuccesso della query:

$status = $STH->execute($params); 

if ($status) { 
    echo 'It worked!'; 
} else { 
    echo 'It failed!'; 
} 

One nota: una query di selezione che non restituisce righe NON è un errore. È un risultato perfettamente valido che sembra non avere risultati.

+3

+1 Nota utile, grazie! –

-3

Questo è il miglior modo per verificare il successo Dottrina interrogazione risultato ritorno o falliti risultato e allo stesso modo come sopra suggeriscono di controllare interrogazione tempo rendimenti successo della vera efallito su falsa.

public static function removeStudent($teacher_id){ 
     $q = Doctrine_Query::create() 
      ->delete('Student s') 
      ->where('s.teacher_id = ?'); 

     $result = $q->execute(array($teacher_id)); 

     if($result) 
     { 
     echo "success"; 
     }else{ 
     echo "failed"; 
     } 
    } 
1

semplicemente posso contare il numero di riga effettuato:

$stmt->execute(); 
$count = $stmt->rowCount(); 

if($count =='0'){ 
    echo "Failed !"; 
} 
else{ 
    echo "Success !"; 
} 
+0

Funziona solo quando si utilizza UPDATE –

+0

sì, questo è per UPDATE, guarda la query che ha chiesto, sembra circa UPDATE –

+1

La domanda specifica: "che dire di UPDATE e SELECT?" –

Problemi correlati