PHP библиотека для работы с pdo

error1001es

Новичок
Всем привет, год изучаю php, захотел написать свою библиотеку для облегчения работы с pdo.
Если вы сталкивались с этим или писали свою библиотеку и у вас есть желание помочь, прошу посмотреть мой код, потому что я почему-то не уверен, что в нем все сделано хорошо
Мой код находится на гитхабе:
 

fixxxer

К.О.
Партнер клуба
Тогда перечитай еще раз и особо обрати внимание на раздел про подготовленные выражения
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Плейсхолдеры где?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Как все используют, так и ты. Любые данные в строку запроса попадают через подстановку плейсхолдеров.
 

error1001es

Новичок
$this->query('INSERT INTO ' . $table . ' (' . implode(',', $keys) . ') VALUES (' . implode(',', $values) . ')');
Вот такого, как уже сказали, быть не должно.
то есть мне надо сделать сначала массив из $keys с добавленным двоеточием, а потом связать их с $values и выполнить запрос?
 

error1001es

Новичок
$this->query('INSERT INTO ' . $table . ' (' . implode(',', $keys) . ') VALUES (' . implode(',', $values) . ')');
Вот такого, как уже сказали, быть не должно.
PHP:
function create($object) //создает строку (из объекта) (любые таблицы)
    {
        $table = $object->tablename;
        unset($object->tablename);
        $keys = [];
        $values = [];
        $columns = [];
        foreach ($object as $key => $value) {
            $keys[] = $key;
            $columns[$key] = ':' . $key;
            $values[$key] = $value;
        }
        $stmt = $this->prepare('INSERT INTO ' . $table . ' (' . implode(',', $keys) . ') VALUES (' . implode(',', $columns) . ')');
        foreach ($keys as $key) {
            $stmt->bindValue($columns[$key], $values[$key], is_integer($values[$key]) ? PDO::PARAM_INT : PDO::PARAM_STR);
        }
        $stmt->execute();
    }
теперь все хорошо?
 

AnrDaemon

Продвинутый новичок
Просто выброси этот ужас и никогда так не делай.
 

error1001es

Новичок
А если в key пробел и дальше чё угодно?
Ключи надо генерировать, вида p0 p1...
но туда не может попасть пробел, ведь я сам ввожу код, а пользователь не сможет выбрать колонку, в которую вводить
да и у объектов свойства не могут начинаться с пробела
 
Сверху