Как работать из PHP с базой данных PostgreSQL

Продолжаю тему работы с базами данных.

В данном посте я рассмотрю работу из PHP с популярной OpenSource СУБД PostgreSQL.

Чаще всего для сайтов в связке с PHP используется база данных MySQL.

Но если для вашего проекта нужна повышенная надёжность и целостность данных, можно использовать PostgreSQL.

К PostgreSQL можно подключаться с помощью pg_connect либо с использованием PDO.

PDO – PHP Data Objects – это модуль PHP, которая дает возможность работы с несколькими базами данных (mysql, postgresql, sqlite, firebird и др.)

pdo 400x350 Как работать из PHP с базой данных PostgreSQL

Работа через PDO в качестве преимущества имеет несколько большую стабильность и возможность обработки исключений.

Сначала рассмотрим подключение с помощью pg_connect

<?
$host='localhost';
$db = 'database';
$username = 'user';
$password = 'password';

# Создаем соединение с базой PostgreSQL с указанными выше параметрами
$dbconn = pg_connect("host=$host port=5432 dbname=$db user=$username password=$password");

if (!$dbconn) {
die('Could not connect');
}
else {
echo ("Connected to local DB");
# Выполняем запрос на создание таблицы testtable

$sql = "CREATE TABLE IF NOT EXISTS testtable (
id serial PRIMARY KEY,
number character varying(20) NOT NULL UNIQUE,
name character varying(20) NOT NULL,
kol character varying(20) NOT NULL
)";

$res = pg_query($sql);
# Сделаем запрос на получение списка созданных таблиц
$res = pg_query($dbconn, "select table_name, column_name from information_schema.columns where table_schema='public'");
if (!$res) {
echo "Произошла ошибка.\n";
}
# Выведем список таблиц и столбцов в каждой таблице

while ($row = pg_fetch_row($res)) {
echo "tableName: $row[0] ColumnName: $row[1]";
echo "<br />\n";
}

# Добавим в созданную таблицу две строчки

$res = pg_query($dbconn, "INSERT INTO testtable (id,number,name,kol) VALUES(1,'2','Name1','4')");
$res = pg_query($dbconn, "INSERT INTO testtable (id,number,name,kol) VALUES(2,'3','Name2','4')");

# Сделаем запрос на получение строк с id=2
$res = pg_query($dbconn, "select name, kol from testtable where id=2");

# Выведем полученные строки
while ($row = pg_fetch_row($res)) {
echo "Name: $row[0] Kol: $row[1]";
echo "<br />\n";
}
}
?>

Вариант подключения с помощью PDO будет выглядеть так:

<?

$host='localhost';
$db = 'database';
$username = 'user';
$password = 'password';


# Создаем соединение с базой PostgreSQL с указанными выше параметрами
$dsn = "pgsql:host=$host;port=5432;dbname=$db;user=$username;password=$password";
try{
$conn = new PDO($dsn);
if($conn){
echo "Connected to the <strong>$db</strong> database successfully!";

# Выполняем запрос на создание таблицы testtable

$sql = "CREATE TABLE IF NOT EXISTS testtable (
id serial PRIMARY KEY,
number character varying(20) NOT NULL UNIQUE,
name character varying(20) NOT NULL,
kol character varying(20) NOT NULL
)";
$conn->exec($sql);
print("Created $table Table.\n");

# Сделаем запрос на получение списка созданных таблиц

$res = $conn->query("select table_name, column_name from information_schema.columns where table_schema='public'");

# Выведем список таблиц и столбцов в каждой таблице

while ($row = $res->fetch(PDO::FETCH_ASSOC)){
echo($row["table_name"].'-'.$row["column_name"]);
}

# Добавим в созданную таблицу две строчки
$conn->query("INSERT INTO testtable (id,number,name,kol) VALUES(1,'1', 'Name1','4')");
$conn->query("INSERT INTO testtable (id,number,name,kol) VALUES(2,'2', 'Name2','4')");

# Сделаем запрос на получение строк с id=2
$res = $conn->query("select name, kol from testtable where id=2");

# Выведем полученные строки
while ($row = $res->fetch(PDO::FETCH_ASSOC)){
echo($row["name"].'-'.$row["kol"]);
}

}
}catch (PDOException $e){
echo $e->getMessage();
}

?>

  Метки: , ,
  admin
  Просмотров: 17 481
  Запись опубликована в 12:17

Есть что сказать? Тогда действуй!