Как получить лишь array?
делаю запрос в базу данных для получения по е-майл
$user = $this->db->get('products', ['email','=', $email]);
Через var_Dump получаю
object(Database)#2 (5) { ["pdo":"Database":private]=> object(PDO)#3 (0) { } ["query":"Database":private]=> object(PDOStatement)#5 (1) { ["queryString"]=> string(38) "SELECT * FROM products WHERE email = ?" } ["error":"Database":private]=> bool(false) ["results":"Database":private]=> array(1) { [0]=> object(stdClass)#6 (4) { ["id"]=> string(2) "16" ["email"]=> string(12) "[email protected]" ["name"]=> string(4) "Danu" ["password"]=> string(60) "$2y$10$plpesxMMJyty6PGqWWkQJefV.tSWAUD.r9rMq6/MYIFUwQfj1jWeq" } } ["count":"Database":private]=> int(1) }
Как можно получить лишь array с данными без private, error, select и.т.п
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Окей, я так понимаю что тебя отговорить не получится. Тогда показываю как правильно делать функцию get()
public function getRow($sql, $params = [], $mode = PDO::FETCH_OBJ){
return $this->query($sql, $params)->fetch($mode);
}
public function getArr($sql, $params = [], $mode = PDO::FETCH_OBJ){
return $this->query($sql, $params)->fetchAll($mode);
}
public function getOne($sql, $params = []){
return $this->query($sql, $params)->fetchColumn();
}
Соответственно, вызов переписать так
$user = $this->db->getRow('SELECT * FROM products WHERE email =?', [$email]);
- Во-первых, надо выкинуть на помойку твой доморощенный квери билдер, который экономит тебе ажно ЦЕЛЫХ ТРИ СЛОВА в SQL запросе, но зато превращает великолепный язык SQL в жалкого уродца, отрывая ему ноги, руки, голову и остальные выступающие части.
- Во-вторых, нужны ТРИ функции, а не одна, по типам возвращаемых результатов
- В-третьих, надо бережно относиться к тому БОГАТОМУ функционалу, который прдеоставляет ПДО, и не отрывать ему ноги тоже, а дать возможность использовать его в своей поделке.