Определение PDO
Подключение через интерфейс PDO Подключение довольно простое, за тем исключением, что теперь одной строкой необходимо сразу указать, к какому типу базы данных вы подключаетесь, имя хоста, а также имя базы данных. Формат вот такой: тип_базы_данных:host=имя_хоста;db=name Если же в SQL выражении вы допустили ошибку, в PDO есть специальные функции: errorCode() – возвращает номер ошибки, и errorInfo() – возвращает массив, в котором, как номер ошибки, так и текст описания Запросы непосредственно можно делать двумя функциями: exec() и query() Отличие их состоит в типе возвращаемого результата, exec возвращает количество затронутых в результате выполнения запроса строк, а вторая, возвращает результат запроса в объекте PDOStatement, о нем поговорим чуть ниже. См. пример-1 Подготовленные выражения Подготовленные выражения очень похожи на обычные SQL запросы, но имеют некоторые преимущества. Во-первых имеют большую скорость выполнения, а во-вторых являются более надежными с точки зрения безопасности, так как все параметры передаваемые в них, автоматически экранируются от всевозможных инъекций. Они имеют весомое преимущество в скорости, при выполнении многократных одинаковых запросов, чем если каждый раз составлять запрос заново. Также экономится траффик между приложением и базой данных. PDO предоставляет удобные функции для работы с подготовленными выражениями. В случае, если выбранный тип базы данных не поддерживает работу с подготовленными выражениями, PDO просто будет эмулировать их работу своими методами. И так для начала создадим подготовленное выражение, это делается функцией Prepare() В качестве параметра она принимает SQL запрос, но в нем, вместо значений, которые необходимо менять, ставятся псевдо переменные, которые могут быть в виде знака вопроса(?), либо имени псевдо переменой, которое начинается с двоеточия (:) $sth1 = $db->prepare(“SELECT * FROM `testing` WHERE id=:id”); $sth2 = $db->prepare(“SELECT * FROM `testing` WHERE id=?”); В зависимости от того, как вы определите переменную, будет зависеть ваша дальнейшая работа. Если вы определили переменные знаком вопроса, то потом, в функцию execute передайте массив значений, в той, последовательности, в которой стоят переменные. Если же вы обозначили переменные именами, то надо будет назначить каждой переменной значение посредством функций: bindValue() – присваивает псевдопеременной значение bindParam() – связывает псевдопеременную с настоящей переменной, и при изменении настоящей переменной, не нужно больше вызывать никаких дополнительных функций, можно сразу execute()