PDO примеры для нубасов

//Простое подключение

$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name.';charset='.$db_charset, $db_user, $db_pwd);

//Подключение с дополнительными параметрами

$attr=array(
	PDO::ATTR_EMULATE_PREPARES => false, 
	PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
	);
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name.';charset='.$db_charset, $db_user, $db_pwd, $attr);

// Получаем все записи fetch() в цикле

$stmt = $db->query('SELECT * FROM table');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
	echo $row['field1'].' '.$row['field2']; //etc...
}

// Получаем все записи через fetchAll()

$results = $db->query('SELECT * FROM table')->fetchAll(PDO::FETCH_ASSOC);

// Получаем количство ячеек аналог COUNT(*)

$row_count = $db->query('SELECT * FROM table')->rowCount();

// Последний добавленный ID и затронуто строк affected rows

$affected_rows = $db->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");
$lastInsertId = $db->lastInsertId();

// запрос с несколькими переменными. prepare() защищает нас от sql inject

$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");
$stmt->execute(array($id, $name));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// тоже самое но красивее

$vars=array(
	':name' => $name, 
	':id' => $id
	);
$stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name");
$stmt->execute($vars);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// для похуистов олдфагов можно и так

$stmt = $db->prepare("SELECT * FROM table WHERE id=$id AND name=$name");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

// если PDO не твоё, но переделывать нужно, то…

$stmt = $db->query("SELECT * FROM table WHERE id=$id AND name=$name")->fetchAll(PDO::FETCH_ASSOC);

Подведем итоги:
-простые селекты без условий проводим через query()
-для инсертов, делетов и апдейтов юзаем exec()
-сложные запросы обрабатываем с помощью prepare() а затем выполняем через execute() и получаем результат через fetch() или fetchAll()
-распиздяи могут вместо :name хуярить $name

Тут продолжение для любопытных http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

Обновлено: 31/10/2016 — 21:48

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *