PHP 5.4.39 в связке с PostgreSQL – настройка подключения и описание основных функций

В материале мы рассмотрим возможность взаимодействия языка программирования PHP версии 5.4.39 с СУБД PostgreSQL 9.1.13, мы научимся связывать PHP и PostgreSQL, узнаем, какие есть функции PHP для работы с PostgreSQL, а также разберем несколько примеров использования этих функций.

Для тех, кто увлекается web-программированием и в частности программированием на PHP не секрет что самой распространенной связкой языка и СУБД является связка PHP и MySQL, но иногда возникает необходимость взаимодействовать и с другими базами, например с PostgreSQL. Кстати, PHP поддерживает работу не только с MySQL и PostgreSQL, но еще и со многими другими СУБД, об этом мы говорили в материале PHP и базы данных. А сегодня мы подробней остановимся именно на работе с PostgreSQL, и начнем мы, конечно же, с вопроса как настроить взаимодействие PHP и PostgreSQL.

Скриншот 1

Примечание! В качестве операционной системы у нас будет выступать Windows 7, в качестве web-сервера Apache 2.2.2, версия PHP 5.4.39, версия PostgreSQL 9.1.13.

Настройка подключения PHP и PostgreSQL

Первое что нужно сделать, это убедиться, что в каталоге с PHP присутствует библиотека libpq.dll. Затем в файле php.ini найди строку, отвечающую за подключение модуля PostgreSQL и раскомментировать ее, а именно

Не подключено

 ;extension=php_pgsql.dll

Подключено

 extension=php_pgsql.dll

Перезапускаем Apache и запускаем phpinfo(), и если Вы найдете блок pgsql, то все, библиотеку PostgreSQL Вы подключили.

Скриншот 2

Если у Вас нет данного раздела, то попробуйте скопировать libpq.dll из каталога PostgreSQL (по умолчанию C:\Program Files\PostgreSQL и так далее) в каталог с PHP с заменой старого, и перезапустите Apache еще раз.

Основные функции PHP для работы с PostgreSQL

pg_connect – открывает соединение с базой данных, возвращает указатель соединения.

pg_query – выполняет запрос к базе данных, возвращает результат запроса.

pg_fetch_assoc – преобразовывает результат запроса в ассоциативный массив.

pg_close – закрывает соединение с базой данных.

Пример работы перечисленных функций

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $result = pg_fetch_assoc($result); 
        echo $result['field_1'] . '</br>' . $result['field_2'];
        pg_close($dbconnect);
?>

Результат

Скриншот 3

В данном случае мы подключаемся к серверу, который расположен локально, по порту 5432, к базе testbase под пользователем admin с паролем 12345 и выполняем запрос (просто статические данные) к базе данных, затем мы преобразовываем результат в ассоциативный массив, выводим на экран и закрываем соединение.

pg_num_rows – возвращает количество строк в наборе данных, который вернул нам запрос.

pg_num_fields — возвращает количество полей в наборе данных, который вернул нам запрос.

pg_fetch_result – возвращает одно значение из результата запроса.

pg_fetch_row — преобразовывает результат запроса в массив.

Пример

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $NumRows = pg_num_rows($result); 
        $NumFields = pg_num_fields($result);  
        $field_1 = pg_fetch_result($result, 0, 0);  
        $result_array = pg_fetch_row($result);  
        echo 'Количество строк - '  . $NumRows . '</br>';
        echo 'Количество полей - '  . $NumFields . '</br>';
        echo 'Значение первого поля первой строки - ' .$field_1 . '</br>';
        echo 'Данные массива - ' . $result_array[0] . '-' . $result_array[1];
        pg_close($dbconnect);
?>

Результат

Скриншот 4

pg_fetch_object – преобразовывает результат запроса в объект.

pg_field_name – возвращает название поля по его номеру.

pg_field_num – возвращает номер поля по его названию.

pg_version – возвращает сведения о протоколе взаимодействия, версии клиента и версии сервера в виде массива.

pg_escape_string – экранирует спецсимволы в строке.

pg_dbname – возвращает название базы данных.

pg_affected_rows – возвращает количество затронутых строк при update, insert и delete.

Пример

<?php
        $connect_string = "host=localhost port=5432 dbname=testbase user=admin password=12345";
        $dbconnect = pg_connect($connect_string);
        $query = "select 'Привет!' as field_1, 123 as field_2";
        $result = pg_query($dbconnect, $query);
        $result_object = pg_fetch_object($result); 
        echo 'Значение свойства - ' . $result_object->field_1. '</br>'; 
        echo 'Название первого поля - ' . pg_field_name($result, 0). '</br>';
        echo 'Номер поля field_1 - ' . pg_field_num($result, 'field_1'). '</br>';
        echo 'Версия PostgreSQL - ' . pg_version($dbconnect)['server'] . '</br>';
        pg_close($dbconnect);   
?>

Результат

Скриншот 5

На этом я предлагаю заканчивать, так как для основ этого достаточно, описание всех функций Вы можете найти на сайте PHP вот здесь, ну все, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментариев: 3
  1. Аватар
    Алеша

    не подключается пхп к постгре, при том при выделении всех остальных субд все работает, но постгре так и не высвечивается( с заменой тоже все перепробовал

    1. Аватар
      Linuxxx

      Установи linux CentOS ине будет проблем брооооооооооооо оо

  2. Аватар
    Госпожа

    У кого не подключает! (нет блока pgsql при выполнении phpinfo()) делаем так:
    1.) В PATH добавьте директорию php где лежит libpq.dll (пример: С:\php)
    2.) Тоже проделать с с директорией PostgreSQL где лежит libpq.dll (это папка bin, пример: С:\PostgreSQL\b in)
    3.) Перезапустить Apache, а может и машину

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.