AOP ont été les lignes affectées lors instruction execute
J'ai trouvé beaucoup de façons d'utiliser l'instruction exec pour les AOP, mais je ne suis pas sûr que ça m'aide. Ma compréhension est que je dois utiliser le execute() de la fonction pour les instructions préparées. Je mets à jour une ligne avec les données de la saisie de l'utilisateur, donc je voudrais utiliser une instruction préparée au lieu de la requête ().
Mon code est comme suit:
$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 />';
}
Le problème est que la requête elle-même est sans erreur et s'exécute bien, donc il n'y a pas d'échec à stocker dans $f. Cependant, j'ai besoin de savoir si elle a effectivement trouvé la ligne pour mettre à jour, puis mis à jour avec succès. En d'autres termes, il me faut le nombre de lignes affectées. Lors de recherches sur google et autres, il continue à venir à l'instruction exec, mais à partir de ma compréhension, exec n'est pas pour les requêtes préparées? Des suggestions?
select authState from tb_users where id = ? and authPass = ?
. Pas de résultats moyens de l'id ou le mot de passe n'existe pas. (p.s. J'espère que vous hachage des mots de passe! regardez pbdkf2!)
OriginalL'auteur MaurerPower | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
Essayer
$q->rowCount()
. Préparées vont retourner le nombre de lignes affectées par cette méthode.Je sais que beaucoup de gens regardent pour cette question, à en juger par les choses que j'ai lu à travers le web, excellent travail sur la rapidité de la réponse! L' $f a finalement pas nécessaire quand il a été dit et fait, peut terminés comme suit: if($q->rowCount()) { ...
UTILISATION: $q->rowCount() CE qui DONNE UNE ERREUR: $f->rowCount()
yep tombé pour elle. utiliser $q->rowCount(), cela peut-il être changé pour celui de droite?
OriginalL'auteur Marc B
$q->rowCount()
retourne le nombre de lignes affectées par la dernière (de l'exécution de l'instruction SQL où$q
est l'instruction préparée qui est souvent appelé$stmt
.De sorte que la plupart des utilisateurs qui lisent ce pourrait vouloir quelque chose comme:
OriginalL'auteur Martin Thoma
Une note de côté: lors de la mise à jour d'un tableau avec des valeurs identiques
rowCount()
sera de retour toujours0
. Ce comportement est normal. Vous pouvez modifier vous-même depuis PHP 5.3 par la création d'un objet PDO avec l'attribut suivant:La
rowCount()
puis sera de retour le nombre de lignes de votre mise à jour de la requête, en fait, trouvé/assorti.OriginalL'auteur bodi0
AOP du
rowCount()
des déclarations préparées retourne les lignes affectées si c'est unUPDATE
,DELETE
ouINSERT
déclaration. Sinon, elle retourne le nombre de lignes renvoyées deSELECT
déclaration.OriginalL'auteur Emre Aydin
je pense que PDO rowCount() est inutile dans MySQL avec une seule requête de mise à JOUR. parce qu'elle a toujours return 0;
je n'ai pas encore testé avec cette requête UPDATE TABLE SET col1="AA"
OriginalL'auteur Do Hoa Vinh