SQL prepare что не так?

12
ArbNet
На сайте с 27.10.2019
Offline
139
#11

Dram, работать с базой через прямые запросы это сейчас архаично. Даже раньше писали класс для удобства и работали через него. Напишите класс для своего удобства для работы с PDO, да придётся PDO хорошенько изучить, подумать как сделать и сделать, но зато в будущем избежите подобных проблем.

Или используйте https://redbeanphp.com, я когда начинал делать свой класс работы с базой, некоторые моменты подсмотрел у redbeen, хотя сделал всё по своему естественно 😎

RedBeanPHP :: Welcome
RedBeanPHP :: Welcome
  • 2022.10.08
  • Gabor de Mooij
  • redbeanphp.com
Save tens of thousands of dollars* worth of development time by boosting your productivity with the most powerful, zero config object relational mapper the industry has ever known. Powering enterprise web applications since 2009 and still running strong. * read the case study News DEMO: Quickly import CSV Let's import a CSV of country codes in...
D
На сайте с 28.06.2008
Offline
1108
#12

Проблему решила строчка 

 $this->pdo->setAttribute( \PDO::ATTR_EMULATE_PREPARES, false );

Добавленная в метод класса работы с базой

    public function query(string $sql, $params = [], string $className = 'stdClass'): ?array
    {
        $this->pdo->setAttribute( \PDO::ATTR_EMULATE_PREPARES, false );
        $sth = $this->pdo->prepare($sql);
        $result = $sth->execute($params);

        if (false === $result) {
            return null;
        }

        return $sth->fetchAll(PDO::FETCH_CLASS, $className);
    }

Я правильно пронимаю что я отключил по сути "подготовленные запросы" и теперь потенциально увеличился риск SQL инъекций?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#13
Я правильно пронимаю что я отключил по сути "подготовленные запросы" и теперь потенциально увеличился риск SQL инъекций?
Именно так, просто смысл PDO потерялся.
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
E
На сайте с 01.10.2017
Offline
115
#14
Dram #:
Проблему решила строчка

Так лом можно было использовать?

В таком случае можно было и молотком, топором или лопатой "решить проблему" 😀

По большому счету здесь даже для catid не нужен подготовленный запрос, т.к. существование категории должно проверяться отдельным "опережающим" запросом. Иногда используют и "ленивые" проверки, но не думаю, что автор достиг такого уровня.

Домены на продажу: https://p20.ru/collection/domains-for-sale
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий