2010-03-23 2 views
0

Я не могу заставить это подключиться к базе данных, чтобы я мог запускать подготовленный оператор. Кто-нибудь знает, что я забыл?Невозможно сравнить значения из mysql в подготовленном операторе

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: Я изменил запрос SQL из ОТБОРНОГО FROM запроса на INSERT INTO запроса, и она работала. Что же такое происходит?

+2

Какова ваша 'errorInfo()' say? http://php.net/manual/en/pdo.errorinfo.php В любом случае вам понадобится какая-то обработка ошибок, не так ли? ... и разве у нас не было этого обмена раньше, чем сегодня? –

+0

Неустранимая ошибка: исключить исключение «PDOException» с сообщением «SQLSTATE [HY093]: недопустимый номер параметра: никаких параметров не были связаны» в E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php: 61 Трассировка стека: # 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} выбрано в E: \ PortableApps \ xampp \ htdocs \ SN \ AC \ ACclass.php в строке 61 – JoeCortopassi

+0

@pekka Та же функция , другой вопрос. Избавьтесь от другого вопроса, потому что я понял, что задал неправильный вопрос, и он бросает людей с – JoeCortopassi

ответ

1

переформатирования трассировки стеки:

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 

Есть ли какая-либо причина вы инстанцирование нового ac объекта в функции check_credentials? Учитывая, что check_credentials уже является методом ac, это кажется странным. dbconnect перезаписать глобальный dbcon?

+0

Честно говоря, у меня нет причин для этого, кроме как я думал, что так оно и было. Позвольте мне изменить его и посмотреть, работает ли он – JoeCortopassi

+0

Не повезло // Глупые ограничения символов для комментариев на SO – JoeCortopassi

+0

О всех, что я могу предложить, это var_dump/print_r $ dbcon и $ userid после каждого шага, посмотрите, появляется ли что-нибудь фанк. –

Смежные вопросы