JohnCMS | Переход на PDO в примерах

2.19K
.
JohnCMS
cd c:\openserver\domains\johncms.dev
потом уже
composer install
долго мучался
.
AlkatraZ >
В данном запросе я применил не $db->query (который тоже будет работать) а метод $db->exec
О разнице между $db->query и $db->exec я потом расскажу в отдельной теме со шпаргалками.
Я посмотрел в разделе со шпаргалками, этого описания вроде бы нет. Так почему ты предпочёл $db->exec вместо $db->query? Последний метод вроде бы удобнее, т.к. сразу возвращает результирующий набор. Или нет?
.
Если ни чего не менялось, exec не возвращает массив данных, что делает его немного быстрее, но применим он лишь к запросам типа insert, update, delete, flush и т.д.
.
# ramzes (24.02.2017 / 06:31)
Если ни чего не менялось, exec не возвращает массив данных, что делает его немного быстрее, но применим он лишь к запросам типа insert, update, delete, flush и т.д.
Т.е., exec работает со всеми sql-операторами, кроме select?
.
# ДоХтор (24.02.2017 / 08:33)
Т.е., exec работает со всеми sql-операторами, кроме select?
нет. он работает вообще со всеми, но не возвращает результат выборки. ты можешь и селект в него засунуть, только толку не будет
.
ramzes, понял, спасибо.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
# ДоХтор (24.02.2017 / 08:33)
Так почему ты предпочёл $db->exec вместо $db->query?
В принципе может показаться, что к примеру для INSERT и UPDATE применение ->query и ->exec монопенисуально.
Однако, если внисмательно вчитаться в мануал по PDO, мы видим следующее:

PDO::exec — Запускает SQL запрос на выполнение и возвращает количество строк, задействованных в ходе его выполнения

PDO::query — Выполняет SQL запрос и возвращает результирующий набор в виде объекта PDOStatement

То есть, в случае PDO::query еще и дергается немаленький класс, который занимает место в памяти и в целом расходует пусть мизерные, но ресурсы. А если нам не нужен результирующий набор данных (например в случае INSERT, UPDATE, DELETE), то зачем расходовать лишние ресурсы и дергать не нужный нам класс? ->exec() получается экономнее. К тому же, по его результату можно выводить "вставлено Х записей", "удалено ХХХ записей" и тому подобное...
.
CyberGhostNet Group
Verry good...
Thank you
.
intelligent
Можно так делать?

старый код:
$msg = mysql_real_escape_string($msg);
новый код:
$msg = trim($db->quote($msg), "'");
.
(\/)____o_O____(\/)
intelligent, trim применяй к msg
Всего: 26