Невозможно сравнить значения из mysql в подготовленном утверждении - PullRequest
0 голосов
/ 23 марта 2010

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

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;
    }

РЕДАКТИРОВАТЬ: Я изменил SQL-запрос с запроса SELECT FROM на запрос INSERT INTO, и он работал. Что, черт возьми, происходит?

1 Ответ

1 голос
/ 24 марта 2010

Переформатирование обратного следа вашего стека:

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?

...