Created
April 16, 2012 13:26
-
-
Save VitaliiTsilnyk/2398764 to your computer and use it in GitHub Desktop.
Самый простой пример PDO
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Подключаемся к бд. первый параметр - линк к бд вида "драйвер:host=хост;port=порт;dbname=имя_бд | |
// Второй и третий параметры - логин и пас соответственно | |
$db = new PDO( | |
"mysql:host=localhost;port=3306;dbname=tmp_db", | |
"root", | |
"*************" | |
); | |
// Тут мы указываем пдо, что если возникла ошибка, то мы ее выводим не как trigger_error() а как исключение (Exception) | |
// Полезно если используется свой перехватчик ошибок | |
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); | |
// Выполняем простой запрос без параметров, вводимых извне (т.е. без фильтрации, не безопасно!) | |
// Указываем кодировку клиента | |
$db->query("SET NAMES utf8"); | |
// Подготавливаем безопасный запрос. Все параметры, передаваемые извне, заменяем на любое имя (ключ), например :имя. | |
$statement = $db->prepare("SELECT count(id) FROM `test` WHERE `email` = :email"); | |
// Выполняем запрос с указанными параметрами | |
// Параметров должно быть строго столько, сколько в подготовленном запросе | |
$statement->execute(array(":email" => $email)); | |
// Можем еще раз выполнить тот запрос, но уже с другими параметрами | |
$statement->execute(array(":email" => $email_2)); | |
// Преобразуем результат ответа БД в ассоциативный массив (для одной, первой попавшейся, строки) | |
$result = $statement->fetch(PDO::FETCH_ASSOC); | |
// То же, но для всех строк | |
$result = $statement->fetchAll(PDO::FETCH_ASSOC); | |
// Отключаться не обязательно, это происходит при вызове деструктора ПДО | |
// Хотя можно отключить его вручную, удалив ссылку на созданный объект, например так: | |
$db = null; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment