Разработчику. Сборник рецептов PHP
Задавайте вопросы

Соединение с базой данных SQL

Вернуться назад

Задача

Необходимо получить доступ к SQL-базе данных.

Решение

Это делается при помощи метода connect() из PEAR DB:

require 'DB.php';

$dsn = 'mysql://david:foo!bar@localhost/test';

$dbh = DB::connect($dsn);
if (DB::isError($dbh)) { die ($dbh->getMessage()); }

Обсуждение

PEAR DB можно загрузить с сайта PEAR по адресу:

http://pear.php.net/package-info.php?package=DB

После загрузки DB-функций с DB.php соединитесь с базой данных посредством функции DB::connect(), выполните запрос с помощью метода $dbh->query() и извлеките каждую строку с помощью метода $sth->fetchRow(). Пример в разделе «Решение» соединяется с базой данных MySQL. Чтобы соединиться с Oracle вместо MySQL, достаточно изменить значение переменной $dsn. Эта переменная содержит имя источника данных (DSN), строку, которая определяет, с какой базой и каким образом следует соединяться. Ниже приведено ее значение для Oracle:

$dsn = 'oci8://david:foo!bar@ORAINST';

Для базы данных PostgreSQL значение переменной $dsn равно:

$dsn = 'pgsql://david:foo!bar@unix(/tmp/.s.PGSQL.5432)/test';

DSN для PostgreSQL немного сложнее, поскольку оно определяет, что соединение должно быть выполнено через локальный сокет UNIX (имя пути к которому равно /tmp/.s.PGSQL.5432), а не TCP/IP-соединение. Обычно имя источника данных имеет вид:

database_interface://user:password@hostname/database

Часть database_interface DSN представляет тип используемой базы данных, наример, Oracle, MySQL и т. д. В настоящее время PEAR поддерживает 10 машин баз данных, которые перечислены в таблице:

Таблица: Машины баз данных PEAR DB

Name Database
fbsql FrontBase
ibase Interbase
ifx Informix
msql Mini-SQL
mssql Microsoft SQL Server
mysql MySQL
oci8 Oracle (использует интерфейс OCI8)
odbc ODBC
pgsql PostgreSQL
sybase Sybase

Для использования конкретной машины баз данных PEAR DB необходимо собрать PHP с поддержкой базы данных, соответствующей выбранной машине. Обратите внимание, что для использования машины баз данных Oracle OCI8, в PHP необходимо включить расширение OCI8 (--with-oci8 при компиляции). Старое Oracle-расширение PHP (--with-oracle) не совместимо с PEAR DB.

Строки user и password представляют имя пользователя и пароль, необходимые для соединения с базой данных. Строка hostname обычно представляет собой имя хоста, на котором запущена база данных, но она может быть также именем экземпляра (для Oracle) или применявшимся ранее обозначением локального сокета с соблюдением специального синтаксиса. Строка database предназначена для хранения имени логической базы данных, такого, которое бы определялось в параметре dbname функции pg_connect() или в аргументе функции mysql_select_db().

PEAR DB ни в коем случае не единственный уровень абстракции базы данных для PHP. Мы выбрали его только потому, что с ним легко работать и он широко распространен. Другие уровни абстракции базы данных включают ADOdb ( http://php.weblogs.com/ADODB), Metabase (http://en.static.phpclasses.org/browse.html/package/20.html), класс B_Sql в PHPLib (http://phplib.sourceforge.net/) и MDB (http://pear.php.net/package-info.php?package=MDB).

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ