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