Php pdo pgsql connect

Connecting to PostgreSQL

Summary: in this tutorial, you will learn how to connect to a PostgreSQL database server using PHP PDO.

Prerequisites

To make a connection to the PostgreSQL database server using PHP PDO, you need to have:

  • A PostgreSQL database server, a database, and an account with a username and password that can access the database.
  • PHP PDO PostgreSQL driver enabled in the php.ini file.

1) PostgreSQL database parameters

Suppose you have the following PostgreSQL database parameters:

  • A PostgreSQL database server on the localhost .
  • The dvdrental sample database.
  • The account with the user postgres and password postgres that can access the dvdrental database on the local database server

The following creates a new database configuration file named config.php that stores the PostgreSQL database parameters:

 $host= 'localhost'; $db = 'dvdrental'; $user = 'postgres'; $password = 'postgres'; // change to your passwordCode language: HTML, XML (xml)

To use these parameters, you include the config.php file in the script that connects to the PostgreSQL using the require construct.

2) Enable PostgreSQL driver

The PDO_PGSQL is a driver that implements the PDO interface. It allows you to access PostgreSQL databases from PHP.

To check if the PDO_PGSQL driver is enabled, you open the php.ini file. Typically, the php.ini file is located under the php directory. For example, if you use XAMPP on Windows, you can find the php.ini file under the C:\xampp\php directory.

in the php.ini file, you can find the following line:

;extension=php_pdo_pgsql.dll

If you see the comma( ; ) placed at the beginning of the line, it means that the line is commented and the database driver is not enabled.

To enable the driver, you need to uncomment the line by removing the comma ( ; ) like this:

extension=php_pdo_pgsql.dll

After that, you need to restart the web server to apply the change.

PostgreSQL data source name

The data source name or DSN holds database parameters that enable access to a database system. The data source name of the PostgreSQL consists of the following parameters:

  • pgsql: is the DNS prefix.
  • host: the host of the server where the PostgreSQL runs.
  • port: the port to which PostgreSQL listens. The default PostgreSQL’s port is 5432 .
  • dbname: the database name that you want to connect to.
  • And other parameters.

The following shows a DSN that connects to dvdrental database in the local PostgreSQL Server, port 5432:

pgsql:host=localhost;port=5432;dbname=dvdrental;

Connecting to PostgreSQL

The following illustrates how to connect to the dvdrental database in PostgreSQL database server:

 require_once 'config.php'; try < $dsn = "pgsql:host=$host;port=5432;dbname=$db;"; // make a database connection $pdo = new PDO($dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); if ($pdo) < echo "Connected to the $db database successfully!"; > > catch (PDOException $e) < die($e->getMessage()); > finally < if ($pdo) < $pdo = null; > > Code language: HTML, XML (xml)
  • First, make a new connection to the PostgreSQL database by creating a new instance of the PDO class.
  • Second, show a message if the database connection is established successfully; otherwise, show an error message.

The following option instruct PDO to set an error code and throw an exception if an error occurs:

[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]Code language: PHP (php)

PDO has three exception handling options:

  • PDO::ERROR_SILENT – PDO sets an error code for inspecting using the PDO::errorCode() and PDO::errorInfo() methods. The PDO::ERROR_SILENT is the default mode.
  • PDO::ERRMODE_WARNING – Besides setting the error code, PDO will issue an E_WARNING message.
  • PDO::ERRMODE_EXCEPTION – Besides setting the error code, PDO will raise a PDOException .

Note that PHP automatically closes the database connection when the script ends. If you want to close the database connection explicitly, you can set the PDO instance to null:

 $pdo = null;Code language: HTML, XML (xml)

The following connect.php script defines a connect() function that makes a connection to the PostgreSQL database and returns an instance of the PDO class:

 require_once 'config.php'; function connect(string $host, string $db, string $user, string $password): PDO < try < $dsn = "pgsql:host=$host;port=5432;dbname=$db;"; // make a database connection return new PDO( $dsn, $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] ); > catch (PDOException $e) < die($e->getMessage()); > > return connect($host, $db, $user, $password);Code language: HTML, XML (xml)

To use this connect.php in a script, you use the require construct as follows:

 $pdo = require 'connect.php'; // start working with the databaseCode language: HTML, XML (xml)

Summary

  • Enable PostgreSQL extension in php.ini file by removing the semicolon ( ; ) from the line extension=php_pdo_pgsql.dll
  • Create a new instance of PDO by passing the data source name (DSN) to its constructor to make a connection to the PostgreSQL database server.

Источник

Как работать с базами данных в PHP с помощью модуля PDO

Как работать с базами данных в PHP с помощью модуля PDO главное изображение

Во время разработки приложений часто нужно подключать и использовать базы данных для хранения информации. Одна из самых распространенных — PostgreSQL. Расскажем, как работать в PHP именно с ней. Для этого мы будем использовать встроенный модуль PHP Data Objects (PDO) — унифицированный интерфейс для работы с базами данных.

Чтобы начать работу с PDO, необходимо поработать с PDO — драйвером конкретной базы данных. Мы будем использовать драйвер для работы с PostgreSQL.

Активация драйвера PDO_PGSQL

Обычно дистрибутив PHP уже содержит драйвер для работы с PostgreSQL PDO_PGSQL , поэтому настраивать PHP вручную не нужно. Если это не так, драйвер придется активировать вручную. Для этого откроем файл php.ini и отредактируем следующую строку:

Нужно раскомментировать строку. Для этого удалим точку с запятой (;) в начале строки и перезапустим веб-сервер.

Создание структуры проекта PHP с помощью Composer

Пакетный менеджер Composer предназначен для управления зависимостями в PHP. Он позволяет подключать к проекту PHP библиотеки и автоматически управлять их обновлением.

С помощью Composer можно формировать структуру проектов. Создадим в каталоге webroot директорию postgresqlphpconnect для хранения файлов проекта. Затем создадим в директории postgresqlphpconnect подкаталог app и файл composer.json. Текст файла будет таким:

 "autoload":  "psr-4":  "PostgreSQLTutorial\\": "app/" > > > 

Каждый новый класс в каталоге app автоматически связывается с пространством имен PostgreSQLTutorial .

Перейдем в каталог postgresqlphpconnect в терминале и введем команду:

Composer должен создать файл автозагрузки, загрузить библиотеки, объявленные в файле composer.json, и разместить библиотеки сторонних разработчиков в директории vendor. В нашем примере библиотеки не объявлены, поэтому команда только создает файл автозагрузки.

Создадим в каталоге postgresqlphpconnect файл index.php, а в каталоге app — файлы Connection.php и database.ini. Структура проекта выглядит следующим образом:

. └── Source Files ├── app │ ├── Connection.php │ └── database.ini ├── composer.json ├── index.php └── vendor ├── autoload.php └── composer 4 directories, 5 files 

Подключение к базе данных PostgreSQL

В файле database.ini будут храниться параметры базы данных PostgreSQL:

Создадим в файле Connection.php новый класс Connection .

 namespace PostgreSQLTutorial; /** * Создание класса Connection */ final class Connection  /** * Connection * тип @var */ private static ?Connection $conn = null; /** * Подключение к базе данных и возврат экземпляра объекта \PDO * @return \PDO * @throws \Exception */ public function connect()  // чтение параметров в файле конфигурации ini $params = parse_ini_file('database.ini'); if ($params === false)  throw new \Exception("Error reading database configuration file"); > // подключение к базе данных postgresql $conStr = sprintf( "pgsql:host=%s;port=%d;dbname=%s;user=%s;password=%s", $params['host'], $params['port'], $params['database'], $params['user'], $params['password'] ); $pdo = new \PDO($conStr); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); return $pdo; > /** * возврат экземпляра объекта Connection * тип @return */ public static function get()  if (null === static::$conn)  static::$conn = new self(); > return static::$conn; > protected function __construct()  > > 

Connection — Singleton-класс. Для него можно создать только один экземпляр. Если экземпляр уже существует, класс возвращает его при попытке создания нового экземпляра.

Для подключения к базе данных PostgreSQL нужно создать экземпляр класса PDO . Используем метод connect() , чтобы получить из файла database.ini параметры конфигурации базы данных, сформировать строку подключения и передать ее конструктору PDO .

Добавим в файл index.php приведенный ниже код:

 require 'vendor/autoload.php'; use PostgreSQLTutorial\Connection; try  Connection::get()->connect(); echo 'A connection to the PostgreSQL database sever has been established successfully.'; > catch (\PDOException $e)  echo $e->getMessage(); > 

Если при подключении к серверу базы данных PostgreSQL возникает исключение, PHP возвращает \PDOException . Для решения этой проблемы нужно создать внутри блока try. catch новый объект PDO .

Выполним команду для обновления файлов автозагрузки:

-o Generating optimized autoload files 

Для проверки запустим в веб-браузере файл index.php. Чтобы это сделать, можно просто перетащить файл в окно браузера, либо открыть файл с помощью меню «Файл → Открыть».

Чтобы ознакомиться с возможным исключением, настроим для файла database.ini неправильные параметры. Мы увидим сообщение об ошибке.

Если неправильно введен пароль, то увидим это сообщение:

Если база данных содержит недостоверные данные, то увидим это сообщение:

Мы научились подключаться к базе данных PostgreSQL в приложении PHP с помощью PDO API. Далее продолжим использовать класс Connection .

Создание таблиц с помощью PHP PDO

Чтобы создать таблицу в базе данных PostgreSQL с помощью PHP PDO, нужно:

  • Создать новый объект PDO для подключения к базе данных
  • Вызвать метод exec() объекта PDO и выполнить оператор CREATE TABLE

Пример создания таблицы

Мы уже создали базу данных hexlet на сервере баз данных PostgreSQL. В целях демонстрации добавим метки таблиц. Создадим в каталоге app класс PostgreSQLCreateTable .

 namespace PostgreSQLTutorial; /** * Создание в PostgreSQL таблицы из демонстрации PHP */ class PostgreSQLCreateTable  /** * объект PDO * @var \PDO */ private $pdo; /** * инициализация объекта с объектом \PDO * @тип параметра $pdo */ public function __construct($pdo)  $this->pdo = $pdo; > /** * создание таблиц */ public function createTables()  $sql = 'CREATE TABLE IF NOT EXISTS hexlet ( id serial PRIMARY KEY, name character varying(255) NOT NULL UNIQUE );' $this->pdo->exec($sql); return $this; > > 

Конструктор класса принимает объект PDO в качестве аргумента. Метод createTables() создает в базе данных новые таблицы. Переменная $sql содержит запрос CREATE TABLE. Для выполнения запроса вызовем метод exec() объекта PDO. В файле index.php подключимся к базе данных PostgreSQL и выполним запрос для создания таблиц.

 require 'vendor/autoload.php'; use PostgreSQLTutorial\Connection; use PostgreSQLTutorial\PostgreSQLCreateTable; try  // подключение к базе данных PostgreSQL $pdo = Connection::get()->connect(); $tableCreator = new PostgreSQLCreateTable($pdo); // создание и запрос таблицы из // базы данных $tables = $tableCreator->createTables(); > catch (\PDOException $e)  echo $e->getMessage(); > 

Добавление данных в таблицу PostgreSQL с помощью PDO

Добавим данные в таблицу базы данных:

  • Создадим новый экземпляр класса PDO для подключения к базе данных PostgreSQL
  • Объявим переменную $sql в которую поместим запрос INSERT . Для передачи параметров этому запросу можно присвоить заполнителям имена, например, :param .
  • Вызовем метод prepare() объекта PDO и подготовим запрос INSERT . Метод prepare() возвращает объект PDOStatement .
  • Вызовем метод bindValue() объекта PDOStatement и передадим значения запросу.
  • Вызовем метод execute() объекта PDOStatement и выполним запрос INSERT .
public function insertLabel($name)  // подготовка запроса для добавления данных $sql = 'INSERT INTO labels(name) VALUES(:name)'; $stmt = $this->pdo->prepare($sql); $stmt->bindValue(':name', $name); $stmt->execute(); // возврат полученного значения id return $this->pdo->lastInsertId('labels_id_seq'); > 

Обновление данных выполняется таким же образом, за исключением того, что принято в конце возвращать количество измененных строк. Это делается с помощью метода rowCount() .

Вот и все — мы узнали, что такое PHP Data Objects, научились подключаться к базе данных, создавать таблицы, добавлять и модифицировать данные. Если вы хотите более подробно изучить PDO, почитайте документацию PHP.

Освойте модуль PDO: На Хекслете есть курс «PHP PDO: Работа с базой данных». Пройдите его, чтобы научиться работать с PDO и освоить основные способы взаимодействия с базой данных.

Источник

Читайте также:  Java getting path from file
Оцените статью