Ho trovato molti modi per utilizzare la dichiarazione exec per PDO, ma non sono sicuro che mi aiuti. La mia comprensione è che devo usare la funzione execute() per le istruzioni preparate. Sto aggiornando una riga con i dati dell'input dell'utente, quindi mi piacerebbe usare una dichiarazione preparata invece della chiamata a query().DOP erano righe interessate durante l'istruzione di esecuzione
Il mio codice è il seguente:
$dbh = buildDBConnector();
$sql = "UPDATE tb_users
SET authState=1
WHERE id = ? AND authPass = ?";
$q = $dbh->prepare($sql);
$f = $q->execute(array($id,$authPass));
if($f){
echo '<br />Success<br />';
}else{
echo '<br />Failure<br />';
}
Il problema è che la query stessa è esente da errori ed esegue bene, quindi non c'è la mancata memorizzazione in $ f. Tuttavia, ho bisogno di sapere se effettivamente ha trovato la riga da aggiornare, quindi l'ho aggiornata con successo. In altre parole, ho bisogno delle righe interessate. Quando googling e così, continua a venire alla dichiarazione exec, ma dalla mia comprensione, exec non è per le dichiarazioni preparate? Eventuali suggerimenti?
Attenzione: se il valore è * già * impostato (l'aggiornamento viene eseguito due volte, forse da un doppio pulsante di invio cliccato) la seconda volta causerebbe un errore anche se i dati sono corretti. Per l'esperienza utente, potrebbe essere più affidabile eseguire in seguito un'istruzione select per vedere se il record esiste con il valore corretto 'select authState da tb_users dove id =? e authPass =? '. Nessun risultato significa che l'ID o la password non esiste. (ps spero che tu abbia cancellato le password! guarda pbdkf2!) –