php
  • mysql
  • pdo
  • 2014-02-03 4 views -2 likes 
    -2

    У меня есть некоторые проблемы, когда я пытаюсь преобразовать систему в PDO_MYSQL. Я попытался преобразовать эту строку:Преобразование в PDO mysql

    return (mysql_result(mysql_query("SELECT COUNT('id') FROM accounts WHERE name='$username' AND password='$password';"), 0) == 1) ? $user_id : false; 
    

    к чему-то вроде:

    $sth = $dbc1->PDOPrepare("SELECT COUNT('id') FROM accounts WHERE name='$username' AND password='$password';"); 
    $sth->execute(); 
    return $sth->fetchColumn(); 
    

    Но я знаю, что это не правильно, это не работает, как хорошо. Итак, может ли кто-то более опытный взглянуть на него? Я не получаю кусок == 1) ? $user_id : false; .. Спасибо заранее.

    EDIT: Работал с return $sth->fetchColumn() ? $user_id : false;

    +0

    Nevermind, работал с возвратом $ sth-> fetchColumn()? $ user_id: false; – user3186716

    +2

    Вы даже не используете имена фактических функций ... Вы прочитали что-нибудь о PDO в руководстве или проверили доступные примеры? –

    +0

    Это настраиваемые функции – user3186716

    ответ

    2

    Я не уверен, что PDOPrepare делает в вашей программе; но вы собираетесь делать подготовленные заявления неправильно. Попробуйте следующее:

    $sth = $dbc1->prepare("SELECT COUNT(id) FROM accounts WHERE name = ? AND password = ?"); 
    $sth->execute(array($username, $password)); 
    return (intval($sth->fetchColumn()) == 1) ? $user_id : false;; 
    

    Пожалуйста, обратите внимание, что я изменил PDOPrepare только с prepare так как это метод класса для PDO.

    +0

    Я обновил основную запись с решением проблемы. благодаря – user3186716

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