Июл 3, 2020 - 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(); } ?>