- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Controllo dati su MySQL
-
@Bacca001 said:
Così stai facendo solo il PREPARE non stai eseguendo la query, quindi per forza di cose ritorna TRUE e ti rimanda al file.
Usa l'execute e poi conta le righe ad esempio, se maggiori di 0 allora mandi alla pagina di errore, se 0 l'utente può registrarsi perchè non esiste nessuno con i suoi dati..
Grazie mille per la risposta, ma non so come fare il conteggio delle righe.
-
@superjolly002 said:
Grazie mille per la risposta, ma non so come fare il conteggio delle righe.
Ah puoi benissimo chiamare rowCount() dopo l'execute
Ad esempio
[PHP]
$db->prepare(..);
$db->execute();if ($db->rowCount() > 0){
// gia registrato
}else{
// non registrato
}
[/PHP]
-
Ah ok, grazie mille dell'aiuto, ora provo e faccio sapere
Up: Allora io ho riscritto il file così:
[PHP]
$user = addsleshes($_POST['User']);
$email = addsleshes($_POST['Email']);
$sth = db -> prepare("SELECT 'user' FROM 'user' WHERE ('user' = :user OR 'email' = :email)'');
$sth -> bindParam (':user', $user);
$sth -> bindParam (':email', $email);
$sth -> execute ()
if ($sth -> rowCount ()){
header ("location: err.php");
}
[/PHP]Unico problema ora è che in qualsiasi caso mi registra nel database, pure se qual dato esiste. Cosa ho sbagliato?
-
Riesci ad incollare il php completo?
-
@Bacca001 said:
Riesci ad incollare il php completo?
Quale php?
-
Il codice dello script
-
[PHP]
<include (dbconnect.php)>
$user = addsleshes($_POST['User']);
$email = addsleshes($_POST['Email']);
$sth = db -> prepare("SELECT 'user' FROM 'user' WHERE ('user' = :user OR 'email' = :email)'');
$sth -> bindParam (':user', $user);
$sth -> bindParam (':email', $email);
$sth -> execute ()
if ($sth -> rowCount () > 0){
header ("location: err.php");
}
[/PHP]
-
Prova così allora, effettivamente non avevo pensato ad una casistica:
dopo la execute()
[PHP]
$row = $sth->fetch(PDO::FETCH_ASSOC);
if ($row){
//errore
}else{
//continuo
}
[/PHP]
-
Continua a non andare... E ho scritto tutto senza errori
-
Oddio mi sembra strano.
Ad ogni modo non stavo testando.Ti incollo il mio codice funzionante (appena testato, mi ero "incagnato" perchè teoricamente doveva funzionare):
[PHP]
<?php
try {$name = 'test'; $email = '[email protected]'; $db_connector = new PDO('mysql:host=localhost;dbname=DBTEST', 'root', 'root'); $query = $db_connector->prepare('SELECT id FROM users WHERE (name = :name OR email = :email)'); $query->bindParam(':name', $name, PDO::PARAM_STR); $query->bindValue(':email', $email); $query->execute(); if($query->rowCount()){ echo "L'utente esiste"; }else{ echo "L'utente non esiste"; }
} catch (PDOException $e) {
print "Errore: " . $e->getMessage() . "<br>";
die();
}
?>
[/PHP]Fammi sapere, se ancora non va, c'è qualcosa che non funziona.
-
Ora non posso provarlo appena lo provo scrivo e faccio sapere
-
Ok, scusa il ritardo della risposta, ma sono stato occupato perchè dovevo andare in vacanza. Ho riscritto il codice come l'hai fatto tu, ma nulla non mi va... Altri consigli per favore?
-
@superjolly002 said:
Ok, scusa il ritardo della risposta, ma sono stato occupato perchè dovevo andare in vacanza. Ho riscritto il codice come l'hai fatto tu, ma nulla non mi va... Altri consigli per favore?
Hai corretto le vari variabili e la query?
-
Certo
-
Prova a questo punto a passare le Variabili direttamente come ho fatto io, senza passare per $_POST, e vedi se è quello, magari il form non manda bene i dati.
Se no, direi che non è il PHP ma è un problema di db, perchè a me funziona benissimo.
-
Bacca001 mi sono accorto che avevo sbagliato a scrivere una cosa, quindi correggendo mi funziona. Grazie mille
-
@superjolly002 said:
Bacca001 mi sono accorto che avevo sbagliato a scrivere una cosa, quindi correggendo mi funziona. Grazie mille
Immaginavo, la magia non esiste! ahah
Figurati