Шпаргалка: работа с PDO

Я понимаю, что большинство сегодня юзают уже готовые инструменты, такие как cms или framework. Но все же инногда надо написать что-то быстро и что-то маленькое и чтоб можно было с БД работать. А понднимать для этой задачи yii или laravel ну вообще никак. Есть конечно микрофреимворки, но вот я как-то еще до них не дошел, хотя надо пощупать.

И так. В таких задачах я использую расширение для php - PDO =) И в этой записи я выложу мини-шпаргалку по работе с PDO в php.


//-------подключение-------------
try
{
	$dbhost = '';
	$dbname = ''; 
	$dbuser = '';
	$dbpass = '';
	
	$db = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 
	$db->exec('SET NAMES utf8');
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
	die('Connection failed');
}

//--------закрытие соединения---------------
$db = null;

//---------подключения к разным БД--------------

// MS SQL Server
$DBH = new PDO("mssql:host=$host;dbname=$dbname", $user, $pass);

// Sybase
$DBH = new PDO("sybase:host=$host;dbname=$dbname", $user, $pass);  
  
// MySQL
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  
  
// SQLite  
$DBH = new PDO("sqlite:my/database/path/database.db");  

//--------------ВЫБОРКА ДАННЫХ----------------

$sql = "SELECT * FROM news;";
foreach ($db->query($sql) as $row)
{
	echo $row['title'];
}
//--------------------------------------------

$sql = "SELECT * FROM news;";
$query = $db->query($sql);
while($row = $query->fetch(PDO::FETCH_ASSOC))
{
	echo $row['title'];
}
//--------------------------------------------

$sql = "SELECT * FROM news;";
$query = $db->query($sql);
while($row = $query->fetch(PDO::FETCH_NUM))
{
	echo $row[1];
}
//--------------------------------------------

$sql = "SELECT * FROM news;";
$query = $db->query($sql);
while($row = $query->fetch(PDO::FETCH_BOTH))
{
	echo $row[1].' '.$row['description'];
}
//--------------------------------------------

$sql = "SELECT * FROM news;";
$query = $db->query($sql);
while($row = $query->fetch(PDO::FETCH_OBJ))
{
	echo $row->title.' '.$row->description;
}
//--------------------------------------------

$sql = "SELECT * FROM news;";
$query = $db->query($sql);
if ($query->rowCount() == 1) return true;
else return false;

//-------------ВСТАВКА ЗАПИСИ-----------------
$db->exec(" INSERT INTO table (title, descr) VALUES ('news title', 'news description') ");

//-----------ПОДГОТОВЛЕННЫЕ ЗАПРОСЫ-----------

$query = $db->prepare("INSERT INTO table (title, content) VALUES (:title, :content)");
$query->bindParam(':title',$title);
$query->bindParam(':content',$content);

$title = 'Article Title';
$content = 'This is article content';
$query->execute();

$title = 'New Article Title';
$content = 'This is ANOTHER article content';
$query->execute();

//------------------
$sql = $db->prepare('SELECT * FROM tbl_person WHERE name = :name');
$sql->bindParam(':name', $name);
$sql->execute();
if ($sql->rowCount() == 1)
{
	$result = $sql->fetchAll();
	foreach($result as $row)
	{
		echo $row['email'];
	}
}

//----------------РАБОТА С ТРАНЗАКЦИЯМИ-------------
// !!! работает только для таблиц с типом InnoDB !!!

try
{
	$db->beginTransaction(); // объявляем транзакцию
	$db->exec(" INSERT INTO users (name, email) VALUES ('Alex', 'test@email.com') ");
	$lastId = $db->lastInsertId(); // получаем последний добавленный ID
	$db->exec(" INSERT INTO users_roles (user_id, role) VALUES ($lastId, '1') ");
	
	throw new PDOException('Error with BD');
	
	$db->commit(); // указываем конец транзакции
}
catch(PDOException $e)
{
	$bd->rollBack();
	echo $e->getMessage();
}

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

Что за сайт

Этот сайт представляет унифицированную базу, где инфа собрана в единое целое, а не разбросанна по многочисленным сайтам, записям на листах бумаги или головам людей; а так же доступна круглосуточно не зависимо от кого-либо или чего-либо.

ФРЕНДЗОНА

Будь в курсе

Интересненько

Поехали