Sembra che tutto funzioni, ma non avendo mai utilizzato PDO, non so se manca qualcosa... Ad esempio, se elimino il blocco "catch{...} mi viene segnalato un errore di sintassi; è perchè il blocco è obbligatorio o perchè ho toppato qualche apice?
Se rimuovi catch, devi togliere anche try
Inoltre, leggevo da vari commenti qui sul forum che PDO mette al riparo automaticamente dai problemi legati all'SQL-Injection... ma in che modo? I controlli effettuati tramite mysql_real_escape_string e dall'espressione regolare per eliminare apici e altri caratteri potenzialmente dannosi nel primo codice, come sono gestiti in PDO?
Non vorrei sbagliare, ma come hai scritto non sei al sicuro da sql-injection, dovresti usare i parametri
Codice PHP:
$loginform = ($_POST["login"]);
$passwordform = ($_POST["password"]);
$emailform = ($_POST["email"]);
$sth = $db->prepare("SELECT * FROM utenti WHERE login = :login");
$sth->execute(array(":login"=>$loginform));
// In alternativa puoi usare bindValue
// $sth->bindValue(":login", $loginform [, PDO::PARAM_STR] ); [] : opzionale
// $sth->execute();