пусть ссылки на PDO равны объекту PDO, а не самому PDO –
Я вижу здесь, что есть PDO->query()
и PDO->exec()
. На странице, которая была связана, оказалось, что PDO->query();
используется только для SELECT
, а PDO->exec()
используется для операторов UPDATE
, INSERT
, DELETE
. Теперь я новичок в PDO, поэтому я не уверен, что происходит с точки зрения его использования, поэтому я бы хотел получить объяснение, почему использовать разные методы и почему существуют разные методы.
Несмотря ни на что теоретическое различие, ни одна из этих функций не должна использоваться в любом случае – так что не о чем беспокоиться.
Единственной причиной использования PDO является поддержка подготовленных операторов , но ни одна из этих функций не предлагает ее. Поэтому они не должны использоваться.
Вместо этого используйте prepare()/execute()
, особенно для операторов UPDATE, INSERT, DELETE.
Обратите внимание, что хотя подготовленные заявления широко рекламируются в качестве меры безопасности, это привлекает внимание людей. Но их реальной целью является правильное форматирование запросов . Это также дает вам безопасность – так же, как и правильно отформатированный запрос, нельзя вводить также как побочный эффект. Но опять же – форматирование является основной целью, просто потому, что даже невинные данные могут вызвать ошибку запроса, если они не отформатированы должным образом.
EDIT: Обратите внимание, что execute()
возвращает только TRUE
или FALSE
чтобы указать успешность операции. Для другой информации, такой как количество записей, затронутых UPDATE
, предоставляются такие методы, как rowCount()
. См. Документы .
Посмотрите официальные документы для PDO :
PDO::exec()
– «Выполнить инструкцию SQL и вернуть количество затронутых строк» PDO::query()
– «Выполняет инструкцию SQL, возвращая результирующий набор как объект PDOStatement» Обе функции выполняют запрос, но exec()
возвращает количество затронутых строк. Это полезно для запроса UPDATE
где ничего полезного не возвращается, и полезно только знать, было ли изменено правильное количество строк.