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?

Avertissement: si la valeur est déjà set (la mise à jour est exécutée deux fois, peut-être à partir d'un double-cliqué sur le bouton soumettre) la deuxième fois serait la cause d'une erreur, même si les données sont beaux. Pour l'expérience utilisateur, il peut être plus fiable de faire une instruction select par la suite afin de voir si l'enregistrement existe avec la valeur correcte 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