Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PDO и запросы
 
 автор: SkyFree   (28.07.2014 в 18:09)   письмо автору
 
 

не давно решил перевести систему на PDO в место штатных mysql_ и сталкнулся с подводным камнем с которым не как не могу разобраться. И так есть форма из которой приходят данные система обрабатывает все даже проверяет на ошибки а значит с формой все впорядке но вот как дело касается отправления запроса она тупо зацикливается. Код:

      public function login($email, $password) {
        #$query = $this->registry->db->query("SELECT * FROM users WHERE user_email = '" . $this->registry->db->escape($email) . "' AND user_password = '" . $this->registry->db->escape(md5($password)) . "' AND user_status = '1'");
                $this->data->db->prepare("SELECT * FROM user WHERE user_email=:email and user_password=:password AND user_status=1");
                $this->data->db->execute(array(
                    'email'    => $email,
                    'password' => $password
                ));
                $query = $this->data->db->fetch(PDO::FETCH_ASSOC);
                
        if($query) {
            $this->data->session->data['user_id'] = $query['user_id'];
            
            $this->user_id = $query['user_id'];
            $this->email = $query['user_email'];
            $this->firstname = $query['user_firstname'];
            $this->lastname = $query['user_lastname'];
            $this->balance = $query['user_balance'];
            $this->access_level = $query['user_access_level'];
              return true;
        } else {
              return false;
        }
      }

Немного подправил но толку нет все равно

      public function login($email, $password) {
        #$query = $this->registry->db->query("SELECT * FROM users WHERE user_email = '" . $this->registry->db->escape($email) . "' AND user_password = '" . $this->registry->db->escape(md5($password)) . "' AND user_status = '1'");
                $query = $this->data->db->prepare("SELECT * FROM `users` WHERE user_email=:email AND user_password=:password AND user_status=1")->execute(array(
                    'email'    => $email,
                    'password' => $password
                ))->fetch(PDO::FETCH_ASSOC);
                
        if($query) {
            $this->data->session->data['user_id'] = $query['user_id'];
            
            $this->user_id = $query['user_id'];
            $this->email = $query['user_email'];
            $this->firstname = $query['user_firstname'];
            $this->lastname = $query['user_lastname'];
            $this->balance = $query['user_balance'];
            $this->access_level = $query['user_access_level'];
              return true;
        } else {
              return false;
        }
      }

  Ответить  
 
 автор: psychomc   (29.07.2014 в 11:39)   письмо автору
 
   для: SkyFree   (28.07.2014 в 18:09)
 

бегло, на первый взгляд всё нормально у вас. попробуйте для начала не использовать цепочки вызовов, а делай это по отдельности, чтобы отдебагить. не нужно везде указывать тип возвращаемых данных PDO::FETCH_ASSOC, достаточно после установки соединения указать вот так
$connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
вообще, если что-то где-то зацикливается, советую поставить расширение xdebug

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования