2011-11-29 15 views
5

Come faccio a verificare se esiste un nome utente utilizzando PDO? Tutto quello che devo sapere è un bool vero (esiste) o falso (non). Ho le parti iniziali impostati, ma sono sicuro di cosa fare dopoVerifica se il nome utente esiste utilizzando PHP PDO

$sthandler = $dbhandler->prepare('SELECT username FROM userdb WHERE username=? LIMIT 1'); 
$sthandler->execute(array('username')); 
// ... What's next? 
+0

si sono gonna vogliono contare la quantità di righe che emergono dalla query (controllare la risposta di Tom). Se è 0 l'utente non esiste, se è 1 o più lo fa. Un consiglio: io di solito non limito la query, se il nome utente dovesse esistere più di una volta posso lanciare un errore, questo significa che qualcosa è buggato o un possibile intruso duplicato l'account ... – HTDutchy

+0

@ s4uadmin - Devi applicare una certa quantità di integrità dei dati direttamente nel database, ad es con un indice unico In caso contrario, eseguirai pazzeschi test per tutte le possibilità di dati corrotti. –

risposta

9

Controllare il conteggio delle righe:

if ($sthandler->rowCount() > 0) { 
    // do something here 
} 
+0

Grazie, amico. Proprio quello di cui avevo bisogno. Codice finale: 'if (! $ Sthandler-> rowCount()) lancia new invalidUserException();' – enchance

+0

ho una domanda per favore mi illumini per esempio nessun record esiste count sarà '0'' 0' non maggiore di '0' quindi non succederà nulla se fosse '$ sthandler-> rowCount() <1', quindi quando un utente esiste non farà nulla per evitare duplicati e se nessuno esiste procederà? –

2

Basta prendere la riga:

if($row = $sthandler->fetch()){ 
    // User exists: read its details here 
}else{ 
    // User does not exist 
} 
2
$username_exists = (bool) $sthandler->fetchColumn(); 

Nota che puoi anche ottimizzare la query un pochino poiché in realtà non hai bisogno di selezionare il nome utente.

SELECT username FROM userdb ... 

diventa

SELECT 1 FROM userdb ... 
Problemi correlati