PHP Data Objects
PHP Data Objects ( PDO ) — расширение
для PHP , предоставляющее
разработчику простой и
универсальный интерфейс для
доступа к различным базам данных.
PDO предлагает единые методы для
работы с различными базами
данных, хотя текст запросов может
немного отличаться. Так как многие
СУБД реализуют свой диалект SQL ,
который в той или иной мере
поддерживает стандарты ANSI и ISO,
то при использовании простых
запросов можно добиться
совместимости между различными
языками. На практике это означает,
что можно достаточно легко перейти
на другую СУБД, при этом не меняя
или частично изменяя код
программы.
PDO не использует абстрактных
слоёв для подключения к БД,
наподобие ODBC , а использует для
разных БД их «родные» драйверы,
что позволяет добиться высокой
производительности. В настоящее
время для PDO существуют драйверы
практически ко всем общеизвестным
СУБД и интерфейсам. Впрочем, есть
и драйвер для подключения к ODBC.
Имя драйвера Поддерживаемые
СУБД
PDO_DBLIB FreeTDS / Microsoft
SQL Server / Sybase
PDO_FIREBIRD Firebird / Interbase 6
PDO_IBM IBM DB2
PDO_INFORMIX IBM Informix Dynamic
Server
PDO_MYSQL MySQL 3.x/4.x/5.x PDO входит в состав PHP 5.1, и
поставлялось как PECL-расширение
для PHP версии 5.0. В более ранних
версиях PDO не работает, так как
требует новых функций ядра
интерпретатора.
Давайте в этой теме помогать друг другу с PDO
для работы с пдо нужно писать класс,т.к. с стандартным не очень удобно работать. такой класс можно взять с двига rotor cms
Да ладно? Обычный тоже норм если руки из правильного места
<?
if (!class_exists(\'PDO\'))
die(\'Fatal Error: Для работы нужна поддержка PDO.\');
class PDO_ extends PDO
{
function __construct($dsn, $username, $password)
{
parent :: __construct($dsn, $username, $password);
$this -> setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$this -> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);
}
function prepare($sql)
{
$stmt = parent :: prepare($sql, array(PDO :: ATTR_STATEMENT_CLASS => array(\'PDOStatement_\')));
return $stmt;
}
function query($sql, $params = array())
{
$stmt = $this -> prepare($sql);
$stmt -> execute($params);
return $stmt;
}
function querySingle($sql, $params = array())
{
$stmt = $this -> query($sql, $params);
$stmt -> execute($params);
return $stmt -> fetchColumn(0);
}
function queryFetch($sql, $params = array())
{
$stmt = $this -> query($sql, $params);
$stmt -> execute($params);
return $stmt -> fetch();
}
}
class PDOStatement_ extends PDOStatement
{
function execute($params = array())
{
if (func_num_args() == 1)
{
$params = func_get_arg(0);
}
else
{
$params = func_get_args();
}
if (!is_array($params))
{
$params = array($params);
}
parent :: execute($params);
return $this;
}
function fetchSingle()
{
return $this -> fetchColumn(0);
}
function fetchAssoc()
{
$this -> setFetchMode(PDO :: FETCH_NUM);
$data = array();
while ($row = $this -> fetch())
{
$data[$row[0]] = $row[1];
}
return $data;
}
}
define (\'DBHOST\', \'localhost\'); //хост
define (\'DBPORT\', \'3306\'); //порт
define (\'DBNAME\', \'jad\'); //имя бд
define (\'DBUSER\', \'mysql\'); //пользователь
define (\'DBPASS\', \'mysql\'); //пароль
class DB
{
static $dbs;
public function __construct()
{
try
{
self :: $dbs = new PDO_(\'mysql:host=\' . DBHOST . \';port=\' . DBPORT . \';dbname=\' . DBNAME, DBUSER, DBPASS);
self :: $dbs -> exec(\'SET CHARACTER SET utf8\');
self :: $dbs -> exec(\'SET NAMES utf8\');
}
catch (PDOException $e)
{
die(\'Connection failed: \' . $e -> getMessage());
}
}
}
?>
класс для роботы с пдо
чем хорош pdo?1.скорость выполнения ,в разы быстрее чем mysql 2.лучше защита
<?php
$hostname = \"localhost\" ;
$username = \"your_username\" ;
$password = \"your_password\" ;
try {
$dbh = new PDO ( \"mysql:host= $hostname ;dbname=mysql\" , $username , $password ) ;
echo \"Соединение установлено; // проверка соединения
}
catch(PDOException $e )
{
echo $e->getMessage ();
}
?>
подключение к бд