Pagina 1 din 1

Problema comenzi PDO

Scris: Joi Dec 20, 2012
de hi_ella
Am incercat sa scriu un script de logare folosind PDO.Am o baza de date log si un tabel user cu campurile id,name si pass .
In vectorul $warnings se salveaza eventualele erori legate de completarea datelor in formular.Variabila $conn realizeaza conectiunea.
Problema e urmatoarea:Imi afiseaza tot timpul nume de utilizator deja folosit.Daca imi puteti spune cum sa verific cand se executa comenzile SQL daca imi returneaza valoare.In cazul de fata daca la primul $stm imi gaseste in baza pe cineva cu acelasi nume de utilizator.Nu stiu daca e buna conditia if ($stm){...

Cod: Selectaţi tot

if(count($warnings)==0){
$stm=$conn->prepare('SELECT * FROM user WHERE name=?');
$stm->execute(array($_POST['nume']));
if ($stm){
echo 'Nume de utilizator deja folosit';
}
else{
$stm->closeCursor();
$stm=null;
$stm=$conn->prepare('INSERT INTO user(name,pass) VALUES (?,?)');
$stm->execute(array($_POST['nume'],$_POST['parola']));
if($stm){
echo 'Inregistrare reusita!';
        }
        }
} 
Multumesc anticipat.
P.S. Sarbatori fericite.

Problema comenzi PDO

Scris: Joi Dec 20, 2012
de MarPlo
Salut
In codul de sus, $stm e o variabila /obiect ce contine interogarea SQL, ea e deja definita, si nu e False.
Pt. ceea ce vrei sa faci, ar trebui sa preiei datele returnate de execute(), si pe acestea sa pui conditie if().
Cam asa:

Cod: Selectaţi tot

$stm = $conn->prepare('SELECT * FROM user WHERE name=?');
if($stm->execute(array($_POST['nume']))) {
    while($row = $stm->fetch()) $thename = $row['name'];
}
if (isset($thename)){
  echo 'Nume de utilizator deja folosit';
}
else{
  // ...
}