@aopil

Класс для работы с PDO?

Ищу самый популярный Class обертку для работы с PDO, нашел такое: ссылка

Актуально еще использовать его? Или подскажите нормальный плиз.
Версия php 5.6
  • Вопрос задан
  • 91 просмотр
Решения вопроса 2
serginhold
@serginhold
вот нормальный
https://github.com/doctrine/dbal

для 5-го php последняя версия вроде эта
https://www.doctrine-project.org/projects/doctrine...
https://packagist.org/packages/doctrine/dbal#v2.5.13
Ответ написан
@FanatPHP
Чебуратор тега PHP
Ну конкретно этот кривоват, и не реализует все возможности PDO.
Навскидку:
- exit('Error connecting to database: ' . $e->getMessage()); - это позор
- self::$sth - бессмыслица
- function getAll - делает обрезание оригинальному методу ПДО, который умеет возвращать данные в десятках различных форматов
- function getValue - стыд, автор не знает что в ПДО есть готовая функция для этого.

Если говорить о таких вот одностраничниках, то я бы рекомендовал попытаться напистаь своё.
Но судя по всему, это для тебя задача неподъемная.
В таком случае, на твоем месте я сначала поучился работать с ванильным PDO. Это реально важно. Это надо обязательно сделать перед тем как начинать использовать всякие обертки. чтобы понимать хотя бы примерно что они там внутри себя делают. А после этого все-таки писал бы свой класс.

В крайнем случае, ограничился бы функцией-хелпером:

function pdo($pdo, $sql, $args = NULL)
{
    $stmt = $pdo->prepare($sql);
    $stmt->execute($args);
    return $stmt;
}


Ключевое слово здесь - return $stmt;. Оно позволяет работать с результатом запроса.

// узнать количество строк
$count = pdo($pdo, "SELECT count(*) FROM users WHERE role=?",[$role])->fetchColumn();

// получить юзера по адресу
$user = pdo($pdo, "SELECT * FROM users WHERE email=?", [$email])->fetch();

// тупо запросить массив строк
$data = pdo($pdo, "SELECT * FROM users WHERE salary > ?", [$salary])->fetchAll();

// получить количество удаленных строк 
$deleted = pdo($pdo, "DELETE FROM users WHERE id=?", [$id])->rowCount();

// вставка
pdo($pdo, "INSERT INTO users VALUES (null, ?,?,?)", [$name, $email, $password]);

// получить массив строк в виде ключ-значение
$indexed = pdo($pdo, "SELECT id, name FROM users")->fetchAll(PDO::FETCH_KEY_PAIR);


Если же хочется чтобы прям как у больших пацанов, но не такое зубодробительно сложное, то https://github.com/auraphp/Aura.Sql
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
RecruitIT Москва
от 100 000 до 160 000 ₽
от 130 000 до 180 000 ₽
Сбер Москва
До 240 000 ₽
26 окт. 2020, в 10:48
3000 руб./за проект
26 окт. 2020, в 10:42
30000 руб./за проект
26 окт. 2020, в 10:18
50000 руб./за проект