- 61
- 48
Размусоленное начало для всех кто не понимает зачем это.
PDO(PHP Data Objects) - это прослойка, которая предлагает универсальный способ работы с несколькими базами данных. Кратко и понятно - PDO заботится о ваших запросах, если вы правильно их напишите.
и бла-бла-бла...
Так сказать к ДЕЛУ
Создаем любой файл в моем случае "config.php", можно и использовать массив прямо в классе разницы зеро.
Содержимое файла:
Дальше нужно создать отдельный файл для класса, что бы его подключать только в тех местах где нужно(просто так красиво).
Назову файл "base.php", файл прикреплю, может кому-то нужен.
Примеры запросов и подключение файла(кто-то не умеет? ЛОЛ)
Допустим у нас есть таблица example в ней 3 записи: 1 test | 2 vitya | 3 oleg
Колонки 2: id и name
Если кто-то не понял array(); == [];
Что обычно в конце не знаю, но мне кажется что это должны использовать все, задавайте вопросы, отвечу.
PDO(PHP Data Objects) - это прослойка, которая предлагает универсальный способ работы с несколькими базами данных. Кратко и понятно - PDO заботится о ваших запросах, если вы правильно их напишите.
и бла-бла-бла...
Так сказать к ДЕЛУ
Создаем любой файл в моем случае "config.php", можно и использовать массив прямо в классе разницы зеро.
Содержимое файла:
PHP:
return array(
'host' => "localhost",
'user' => "username", // имя пользователя базы
'name' => "basename", // имя базы
'passowrd' => "userpassowd", // пароль от пользователя базы
);
Дальше нужно создать отдельный файл для класса, что бы его подключать только в тех местах где нужно(просто так красиво).
Назову файл "base.php", файл прикреплю, может кому-то нужен.
PHP:
class Db {
protected $db;
public function __construct() {
$config = require 'config.php'; // подключаем наш файл с конфигом
$this->db = new PDO('mysql:host='.$config['host'].';dbname='.$config['name'].'', $config['user'], $config['password']); // производим подключение к базе
$this->db->exec("set names utf8"); // кодируем в utf8, если вы не используете U
}
public function query($sql, $params = []) {
$stmt = $this->db->prepare($sql);
if (!empty($params)) {
foreach ($params as $key => $val) {
if (is_int($val)) {
$type = PDO::PARAM_INT;
} else {
$type = PDO::PARAM_STR;
}
$stmt->bindValue(':'.$key, $val, $type);
}
}
$stmt->execute();
return $stmt;
} // в данном паблике можно не разбираться, он производит общение с базой.
public function row($sql, $params = []) {
$result = $this->query($sql, $params);
return $result->fetchAll(PDO::FETCH_ASSOC);
} // собственно получает все строки следуя вашему запросу.
public function column($sql, $params = []) {
$result = $this->query($sql, $params);
return $result->fetchColumn();
} // одна строка один столбец
public function lastInsertId() {
return $this->db->lastInsertId();
} // посдледний занесенный ID в таблицу
public function numrows($sql, $params=[]){
$result = $this->query($sql, $params);
return $result->rowCount();
} // кол-во записей в таблице
}
Примеры запросов и подключение файла(кто-то не умеет? ЛОЛ)
Допустим у нас есть таблица example в ней 3 записи: 1 test | 2 vitya | 3 oleg
Колонки 2: id и name
PHP:
require_once("base.php"); // единоразово подключаем файл base.php(файл с классом)
$bd = new Db; // вызываем класс, теперь мы можем с ним работать, все функции вызываются через ->.
$row = $bd->column("SELECT `id` FROM `example`");
var_dump($row);
/*
Получим string(1) "1". т.к. отдает одну строку и один столбец, т.е. строку.
*/
$row = $bd->row("SELECT `id` FROM `example`");
/*
Ответ от базы:
array(3) {
[0]=> array(1) {
["id"]=> string(1) "1"
}
[1]=> array(1) {
["id"]=> string(1) "2"
}
[2]=> array(1) {
["id"]=> string(1) "3"
}
}
Получаем три строки со столбцом id. Т.к. у нас 3 записи.
Впринципе и так далее. Для работы с базой в более расширенном режиме чем просто получение данных поспользуемся "query"
*/
$array = [
'name' => "vitek";
];
$bd->row("ISERT INTO `example` (`name`) VALUES (:name)", $array); // добавит запись с id 4 и name vitek
echo $bd->lastInsertId(); // вернет 4[/SIZE]
// логично, что numrows вернет тоже число 4.
Если кто-то не понял array(); == [];
Что обычно в конце не знаю, но мне кажется что это должны использовать все, задавайте вопросы, отвечу.
Вложения
Последнее редактирование: