PostgreSQL PHP: Connect to PostgreSQL Database Using PDO
Summary: in this tutorial, you will learn how to set up a simple project structure and connect to the PostgreSQL database using PHP PDO API.
Enable PDO_PGSQL driver
Most PHP distributions include the PostgreSQL extension PDO_PGSQL
by default so you don’t need to do any further configuration in PHP.
However, if this is not the case, you can enable the extension by editing the php.ini
file to uncomment the following line:
To uncomment the line, you remove the semicolon (;) at the beginning of the line and restart the web server.
Create a PHP project structure with Composer
The Composer is a tool for managing dependency that allows you to declare the PHP library in a project and manage the update automatically.
We will use the Composer to set up the project structure of all the projects that we will be working on.
First, create the postgresqlphpconnect
folder in the webroot folder to store the project files.
Next, create the app
folder and a new composer.json
file in the postgresqlphpconnect
folder with the following content:
It means that every class that you create in the app
folder will map to the PostgreSQLTutorial
namespace.
Then, go to the window terminal, navigate to the postgresqlphpconnect
folder, and type the following command:
This command instructs the Composer to download the declared libraries in the composer.json
file and generate an autoload file.
The command will also place all third-party libraries in the newly created vendor
folder. Because we don’t declare any library in the composer.json
file, it generates the autoload file.
After that, create the index.php
file in the postgresqlphpconnect
folder.
Finally, create two more files in the app
folder: Connection.php
and database.ini
.
The project structure will look like the following picture:
Connect to the PostgreSQL database
First, create a new database named stocks
for the demonstration.
Next, use the database.ini
file to store the PostgreSQL database parameters as follows:
Then, create a new class called Connection
in the Connection.php
file.
How it works.
- The
Connection
class is a singleton class. It means that you can create only one instance for the class. If the instance already exists and you try to create a new one, the class will return the existing reference. - To connect to a PostgreSQL database, you need to create a new instance of the PDO class. In the
connect()
method, we read the database configuration parameters in thedatabase.ini
file, construct a connection string, and pass it to thePDO
constructor.
After that, place the following code in the index.php
file.
PHP throws a \PDOException
if there is an exception occurs when connecting to the PostgreSQL database server, therefore, you need to place the code to create a new PDO
object inside the try...catch
block to handle the exception.
Run the following composer command to update the autoload files:
Output:
Finally, launch the index.php
file from the web browser to test it.
If you want to see the exception that may occur, you can change the parameters in the database.ini
file to an invalid one and test it.
The following is the error message when the password is invalid.
And the following is the error message when the database is invalid.
In this tutorial, you have learned how to connect to the PostgreSQL database from a PHP application using the PDO API. We will reuse the Connection
class in the subsequent tutorials.