AOP préparées : Comment faire pour exécuter, vérifier le nombre de lignes affectées, de récupérer un champ
Je suis très nouveau à PDO - dit seulement à la tête dans cette direction, ce matin. Donc, écoutez-moi. Je suis en train de réécrire mon vérification de la connexion de la fonction à partir d'un standard mysql_query()
à une AOP déclaration préparée à l'avance, mais je rencontre quelques problèmes.
La fonction loginCheck() passe fournis email et mot de passe, puis saisit le sel de la mise en correspondance e-mail, si le nombre de lignes affectées de cette requête est de 1, appliquer la variable $salt
le résultat de cette requête.
Pour la dernière partie de la fonction, j'ai été précédemment en utilisant simplement:
//standard mysql query goes here
if (mysql_num_rows($query) == 1) {
$salt = mysql_result($query, 0);
}
Maintenant toute ma fonction ressemble:
//new mysql query below
global $dbh;
$stmt = $dbh->prepare("SELECT `salt` FROM `users` WHERE `email`=? LIMIT 1");
$stmt->execute($email);
//not sure what to write here?
mais je vais avoir du mal à comprendre comment traduire la première partie du code à quelque chose de semblable dans l'AOP. Je suis aussi probablement fait quelque chose de mal ici (comme toujours), de sorte que le point hors de moi.
J'ai regardé à travers le manuel PHP et je ne peut tout simplement pas comprendre surtout. Des idées?
OriginalL'auteur ReactingToAngularVues | 2011-12-27
Vous devez vous connecter pour publier un commentaire.
Je suppose que ce que vous cherchez est
PDOStatement::rowCount
:Je serais plutôt de l'écrire comme cela:
Explicite de nommage est plus robuste que selon la colonne compte.
À comprendre le manuel, vous avez besoin de comprendre orientée objet de la notation/concepts. La documentation pour la La classe PDO ressemble:
Cela signifie qu'un objet PDO (
$dbh
dans votre exemple), est une méthodeprepare
qui renvoie unePDOStatement
objet. Vous l'utilisez comme ceci:Donc
$stmt
est unPDOStatement
objet. Sachant cela, vous pouvez regarder le documentation dePDOStatement
, et de voir qu'il a une méthodeint PDOStatement::rowCount ( void )
, que vous pouvez utiliser.PDOStatement::execute() expects parameter 1 to be array, string given
avec la ligne$stmt->execute($email);
. Pourquoi faut-il s'attendre à$email
être un tableau?Si vous utilisez les paramètres nommés,
execute
s'attend à une associatif nom => tableau de valeur. Regarde mon code, je suis en utilisantcompact
pour créer ce tableau.OriginalL'auteur deceze
Voici mon préféré AOP tutoriel. Il répond à toutes vos questions:
OriginalL'auteur Ayman Safadi