Июл 3, 2020 -
PHP
Написать комментарий
PHP
Написать комментарий Как работать из PHP с базой данных PostgreSQL
Продолжаю тему работы с базами данных.
В данном посте я рассмотрю работу из PHP с популярной OpenSource СУБД PostgreSQL.
Чаще всего для сайтов в связке с PHP используется база данных MySQL.
Но если для вашего проекта нужна повышенная надёжность и целостность данных, можно использовать PostgreSQL.
К PostgreSQL можно подключаться с помощью pg_connect либо с использованием PDO.
PDO – PHP Data Objects – это модуль PHP, которая дает возможность работы с несколькими базами данных (mysql, postgresql, sqlite, firebird и др.)
Работа через 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
Просмотров: 19 486
Запись опубликована в 12:17