When you talk about PHP and databases, people tend to assumeyou're talking about MySQL. But hang on to your horses - difficultthough it may be to believe, PHP does include support for a number ofother databases. One of them is PostgreSQL, the *other* open-sourcedatabase - and this article tells you everything you need to know aboutusing it with PHP.
2. A Web server which supports PHP, available from http://www.php.net/ (this article uses Apache 1.3.24 with PHP 4.2.0)
Note that your PHP build must support PostgreSQL in order for the examples in this article to work correctly. You can include PostgreSQL support in your PHP build by adding the "--with-pgsql" configuration parameter when compiling the package. Note also that PHP 4.2.0 and better contains fairly extensive changes to the function names used in the language's PostgreSQL module; this article uses the new function names and assumes that you're running PHP 4.2.x. Drop by http://www.php.net/manual/en/ref.pgsql.php for more information on the changes, and the corresponding function names for older versions.
I'm not going to get into the details of configuring and installing either PostgreSQL or PHP here - the documentation included with both those packages has more than enough information to get you started, and the accompanying Web sites contain lots of troubleshooting information should you encounter problems. In case you don't already have these packages installed on your development system, drop by the Web sites listed above, get yourself set up and come back once you're done.
Assuming that you have a properly configured and installed setup, the first step is to start both the database server and the Web server.
[postgres@medusa] $ /usr/local/pgsql/bin/postmaster -i -D
DEBUG: database system was shut down at 2002-04-12 19:18:12 IST
DEBUG: CheckPoint record at (0, 1694744)
DEBUG: Redo record at (0, 1694744); Undo record at (0, 0); Shutdown
DEBUG: NextTransactionId: 643; NextOid: 18778
DEBUG: database system is in production state [postgres@medusa] $ su -
root [root@medusa] $ /usr/local/apache/bin/apachectl start Starting
httpd [OK] [root@medusa] $
Note that the PostgreSQL server must be started as the special "postgres"
user created during the installation process, and the startup invocation must include the additional "-i" parameter to allow TCP/IP connections to the server.
The next step is to create an example database table that can be used for the code listings in this article. Here's what the SQL dump file looks like:
CREATE TABLE addressbook (id serial, name varchar(255), address text,
tel varchar(50), email varchar(255));
INSERT INTO addressbook values (nextval('addressbook_id_seq'), 'Bugs
Bunny', 'The Rabbit Hole, Looney Toons, USA', '123 4567',
INSERT INTO addressbook values (nextval('addressbook_id_seq'), 'Robin
Hood', 'Sherwood Forest', 'None', 'email@example.com');
INSERT INTO addressbook values (nextval('addressbook_id_seq'), 'Sherlock
Holmes', '221B Baker Street, London 16550, England', '911 1822',
You can import this data into PostgreSQL by dropping to a shell and using
the following command:
[postgres@medusa] $ /usr/local/pgsql/bin/createdb test [postgres@medusa]
$ /usr/local/pgsql/bin/psql -d test -f /home/postgres/addressbook.sql
Now check whether or not the data has been successfully imported with a
SELECT query (the SELECT SQL statement is used to retrieve information from a database) via the interactive PostgreSQL monitor program "psql".
[postgres@medusa] $ /usr/local/pgsql/bin/psql -d test
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
test=# SELECT COUNT(*) FROM addressbook;
which, in English, means "count all the records in the table addressbook
and give me the total".
If your output matches what's listed above, take a celebratory sip of Jolt - you're in business!