- PDO, подключение к базе данных
- PDO, получение (чтение) и вывод данных из БД
- PDO, создаем таблицу
- PDO, вставка новых записей в таблицу (БД)
- PDO, обновление существующих записей в таблице
- PDO, удаление записей из таблицы
PDO, подключение к базе данных
Подключение к БД с помощью PDO выглядит так:
<?php
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
Думаю из названия переменных ясно, что и куда подставлять.
Для обнаружения ошибок будем использовать методы try/catch:
<?php
try {
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
PDO::ERRMODE_EXCEPTION - выводить исключения, когда они произойдут.
PDO, получение (чтение) и вывод данных из БД
В PDO получить данные можно двумя способами (методами):
- query
- execute
Разберем оба.
Чтение и вывод данных с помощью query
Сразу к примеру:
<?php
$q = 'кодер.укр';
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//получаем данные
$data = $dbcon->query('SELECT * FROM tableName WHERE fieldName = ' . $dbcon->quote($string));
//выводим результат
foreach($data as $rows) {
print_r($rows);
}
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
$dbcon->quote - метод аналогичный mysql_real_escape_string, для экранирования данных.
Еще один пример:
<?php
$q = 'кодер.укр';
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//получаем данные
$data = $dbcon->query('SELECT * FROM tableName');
//выводим результат
foreach ($dbcon->query($sql) as $row) {
echo " ID: ".$row['ID'] . "<br />";
echo " Name: ".$row['name'] . "<br />";
echo " Other field: ".$row['otherField'] . "<br />";
}
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
Чтение и вывод данных с помощью execute
Пример:
<?php
$q = 'кодер.укр';
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$data = $dbcon->prepare('SELECT * FROM tableName WHERE fieldName = :q');
$data->execute(array('q' => $q));
$result = $data->fetchAll();
if (count($result)) {
//выводим результат
foreach($result as $row) {
print_r($row);
}
} else {
echo "Нет записей для вывода";
}
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
Здесь мы работаем с методом prepare. Это сводит к минимуму возможность SQL инъекции. Так как $q не попадет непосредственно в запрос, а в запросе используем заполнитель :q.
Так же выводить данные можно следующим образом:
while($row = $data->fetch(PDO::FETCH_OBJ)) {
print_r($row);
}
PDO::FETCH_OBJ - создает анонимный объект со свойствами, которые соответствуют именам столбцов запроса.
PDO::FETCH_ASSOC - вернет массив, индексированный именами столбцов запроса.
PDO::FETCH_BOTH - возвращает массив, индексированный именами столбцов запроса, а также их номерами (начиная с 0). Используется по умолчанию.
PDO::FETCH_NUM - возвращает массив, индексированный номерами столбцов (начиная с 0).
PDO, создаем таблицу
<?php
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
//запрос на создание таблицы
$sql = "CREATE TABLE `tableName` ( `ID` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(40) NOT NULL, `otherField` VARCHAR(40) NOT NULL, PRIMARY KEY (`ID`)) ";
$dbcon->exec($sql);
echo "Таблица tableName готова к использованию.";
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
PDO, вставка новых записей в таблицу (БД)
Добавляем запись в таблицу:
<?php
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $dbcon->prepare('INSERT INTO tableName VALUES(:fieldName)');
$data->bindParam(':fieldName', $fieldData);
$fieldData= 'Нужные данные';
$data->execute();
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
Добавляем несколько записей подряд в таблицу:
<?php
try {
//соединение с БД
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $dbcon->prepare('INSERT INTO tableName VALUES(:fieldName)');
$data->bindParam(':fieldName', $fieldData);
$fieldData= 'Нужные данные';
$data->execute();
$fieldData= 'Нужные данные 2';
$data->execute();
$fieldData= 'Нужные данные 3';
$data->execute();
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
PDO, обновление существующих записей в таблице
Пример обновления записей:
<?php
//данные для вставки
$id = 1;
$name = "Новое имя";
try {
$dbcon = new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $dbcon->prepare('UPDATE tableName SET name = :name WHERE id = :id');
$data->execute(array(
':id' => $id,
':name' => $name
));
echo $data->rowCount(); //выведет: 1
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
PDO, удаление записей из таблицы
Последний пример, удаление записей из таблицы:
<?php
$id = 1;
try {
$dbcon= new PDO('mysql:host=localhost;dbname=dbName', $dbUsername, $dbPassword);
$dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $dbcon->prepare('DELETE FROM tableName WHERE id = :id');
$data->bindParam(':id', $id);
$data->execute();
echo $data->rowCount(); //выведет: 1
} catch(PDOException $e) {
echo 'Ошибка: ' . $e->getMessage();
}
Я описал основные способы работы с базой данных через PDO, для более детального изучения можно почитать документацию: http://php.net/manual/en/book.pdo.php.
devreadwrite.com



Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
Отличная шпаргалка, если что-то забыл)
Ответить