2010-03-23 4 views
0

Je n'arrive pas à obtenir cette connexion à la base de données pour pouvoir exécuter ma requête préparée. Est-ce que quelqu'un a une idée de ce que j'ai oublié?Impossible de comparer les valeurs de mysql dans une instruction préparée

private function check_credentials($plain_username, $password) 
    { 
    global $dbcon; 

    $ac = new ac(); 
    $ac->dbconnect(); 
    $userid = $dbcon->prepare('SELECT id FROM users WHERE username = :username AND password = :password LIMIT 1'); 
    $userid->bindParam(':username', $plain_username); 
    $userid->bindParam(':password', $password); 
    $userid->execute(); 

    $id = $userid->fetch(); 
    Return $id; 
    } 

EDIT: Je changé la requête SQL SELECT d'une requête DE, à une requête INSERT INTO et cela a fonctionné. Que diable se passe t'il?

+2

Quel est votre dicton 'errorInfo()'? http://php.net/manual/en/pdo.errorinfo.php Vous aurez besoin d'une sorte de gestion des erreurs de toute façon, vous ne pensez pas? ... et n'avons-nous pas eu cet échange plus tôt aujourd'hui? –

+0

Erreur irrécupérable: exception non interceptée 'PDOException' avec le message 'SQLSTATE [HY093]: numéro de paramètre non valide: aucun paramètre lié' dans E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php: 61 Trace de pile: # 0 E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php (61): PDOStatement-> execute (Array) # 1 E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php (34): ac -> check_credentials ('joe', '94a02c32b6ff629 ...') # 2 E: \ PortableApps \ xampp \ htdocs \ SN \ UI \ UIclass.php (17): ac-> authentication() # 3 E: \ PortableApps \ xampp \ htdocs \ SN \ index.php (4): ui-> start() # 4 {main} lancé dans E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php sur la ligne 61 – JoeCortopassi

+0

@pekka Même fonction , question différente. Je me suis débarrassé de l'autre question, parce que je me suis rendu compte que je demandais la mauvaise chose, et il rejetait les gens – JoeCortopassi

Répondre

1

reformater votre trace de la pile:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in E:\PortableApps\xampp\htdocs\SN\AC\ACclass.php:61 
Stack trace: 
#0 E:\PortableApps\xampp\htdocs\SN\AC\ACclass.php(61): PDOStatement->execute(Array) 
#1 E:\PortableApps\xampp\htdocs\SN\AC\ACclass.php(34): ac->check_credentials('joe', '94a02c32b6ff629...') 
#2 E:\PortableApps\xampp\htdocs\SN\UI\UIclass.php(17): ac->authentication() 
#3 E:\PortableApps\xampp\htdocs\SN\index.php(4): ui->start() 
#4 {main} thrown in E:\PortableApps\xampp\htdocs\SN\AC\ACclass.php on line 61 

Y at-il une raison quelconque vous instancier un nouvel objet ac dans la fonction check_credentials? Étant donné que check_credentials est déjà une méthode de ac, cela semble étrange. Est-ce que dbconnect remplace le dbcon global?

+0

Honnêtement, je n'ai pas de raison pour ça, sauf que je pensais que ça fonctionnait. Permettez-moi de le changer et voir si cela fonctionne – JoeCortopassi

+0

pas de chance // Limites de caractères stupides pour les commentaires à SO – JoeCortopassi

+0

À propos de tout ce que je peux suggérer est var_dump/print_r le $ dbcon et $ userid après chaque étape, voir si quelque chose de funky apparaît là-bas. –

Questions connexes