WeberDev.com PHP and MySQL Code

LOG IN
BEGINNER GUIDES  |  PHP CLASSES  |  CODE SEARCH  |  ARTICLES SEARCH  |  PHP FORUMS  |  PHP MANUAL  |  PHP FUNCTIONS LIST  |  WEB SITE TEMPLATES
Start typing to search for PHP and MySQL Code Snippets and Articles Search
Submit a code Example / Snippet Submit Your Code
Search Engine Optimization Monitor SEO Monitor
Web Site UpTime Monitor UpTime Monitor
WeberDev's Monthly code contest PHP Code Contest
Your Personal Examples List My Favorite Examples
Your Personal Articles List My Favorite Articles
Edit Account Info Update Your Profile
PHP Code Search
Web Development Forums
Learn MySQL Playing Trivia
PHPBB2 Templates
Web Development Index
PHP Web Logs (BLogs)
Web Development Resources
Web Development Content
PHPClasses
PHP Editor
PHP Jobs
Vision.To Design
Ajax Tutorials
PHP Programming Help
PHP/MySQL Programming
Webmaster Resources
Webmaster Forum
XML meta language
website builder
Submit Site
Forex Trading Online forex trading platform

Go Back Add a Comment Send this Article to a friend Add this Article to your personal favoritest for easy future access to your favorite Code Examples and Articles. Submit a code example Print this code example.
BACK ADD A COMMENT SEND TO A FRIEND ADD TO MY FAVORITES SUBMIT AN ARTICLE PRINT
Title : Simple Connection to PostgreSQL with PHP
Categories : PHP, PostgreSQL, Databases Picture not available
Meloni Julie
Date : 2000-01-16
Grade : 0 of 5 (graded 0 times)
Viewed : 7671
Search : More Articles by Meloni Julie
Action : Grade This Article
Tools : My Favotite Articles


  Submit your own code examples 
 


Like MySQL, the PostgreSQL database is quite popular among PHP developers.
Understandably, there are numerous well-documented PHP functions you can use in
conjunction with PostgreSQL; see the PHP Manual for a complete list. However,
you only need a few of these functions in order to make a simple connection and
select some data:



pg_connect - opens a connection to PostgreSQL; requires a hostname, database name, username and password.



pg_exec - executes the SQL statement.



pg_numrows - returns the number of rows in a result





pg_fetch_array - puts a SQL statement result row in an array.



pg_freeresult - frees the resources in use by the current connection.



pg_close - closes the current connection.



Just for argument's sake, let's pretend that a PostgreSQL database is already installed on your system, for which you have a valid username and password. Let's also assume that you've created a table on that database, called COFFEE_INVENTORY. The COFFEE_INVENTORY table has three columns: COFFEE_NAME, ROAST_TYPE and QUANTITY.



The rows in the COFFEE_INVENTORY table could be populated with data such as:



French Roast,dark,18



Kenya,medium,6



Ethiopian Harrar,medium,35



Sumatra,dark,8



Columbian,light,12



Now, let's do some PHP. Before you begin, you must know the name of the server on which the database resides, and have a valid username and password. Then, start your PHP code by creating a connection variable:


<?
$connection
= pg_connect("host=YourHostname dbname=YourDBName user=YourUsername password=YourPassword");


Test that a connection was established, and if it wasn't, print an error message and exit the program:


if (!$connection) {
echo "Couldn't make a connection!";
exit;
}


Up to this point, you've told PHP to connect to a server and select a database. If you've made it this far, you can issue a SQL statement and hopefully see some results! Using the COFFEE_INVENTORY table, suppose you want to view your inventory, including the name of the coffee and the roast type, with the highest number of bags listed first. Create a variable that holds your SQL statement:





$sql = "SELECT COFFEE_NAME, ROAST_TYPE, QUANTITY
FROM COFFEE_INVENTORY
ORDER BY QUANTITY DESC";


Next, create a variable to hold the result of the query, carried out by the pg_exec function. The pg_exec function takes two arguments: the connection and SQL statement variables you've just created.


$sql_result = pg_exec($connection,$sql);


Get the number of rows in the result set, using the pg_numrows function:



$num = pg_numrows($sql_result);



To format the results currently held in $sql_result, first separate the results by row, using the pg_fetch_array function.


$i = 0;

while ($i < $num) {

$row = pg_fetch_array($sql_result, $i);
// more code here...

$i++;
}


The while loop will create an array called $row for each record in the result set. To get the individual elements of the record (COFFEE_NAME, ROAST_TYPE, QUANTITY), create specific variables:


$coffee_name = $row["COFFEE_NAME"];
$roast_type = $row["ROAST_TYPE"];
$quantity = $row["QUANTITY"];


You'll probably want to print the results in a simple HTML table. Step back and place this statement before the while loop begins, to open the table tag and create the row headings:


echo "<TABLE BORDER=1>";
echo "<TR><TH>Coffee Name</TH><TH>Roast Type</TH><TH>Quantity</TH>";


After defining the variables within the while loop, print them in table format:


echo "<TR><TD>$coffee_name</TD><TD>$roast_type</TD><TD>$quantity</TD></TR>";


The new while loop now looks like this:


while ($i < $num) {
$row = pg_fetch_array($sql_result, $i);
$coffee_name = $row["COFFEE_NAME"];
$roast_type = $row["ROAST_TYPE"];
$quantity = $row["QUANTITY"];
echo "<TR><TD>$coffee_name</TD><TD>$roast_type</TD><TD>$quantity</TD></TR>";
i++;
}


After the while loop, close the HTML table:


echo "</TABLE>";


Finally, you'll want to free up the resources used to perform the query, and close the database connection. Failing to do so could cause memory leaks and other nasty resource-hogging things to occur.


pg_freeresult($sql_result);
pg_close($connection);

?>


The full script to perform a simple connection and data selection from a PostgreSQL database could look something like this:


<?php

// create connection
$connection = pg_connect("host=YourHostname dbname=YourDBName user=YourUsername password=YourPassword");

// test connection
if (!$connection) {
echo
"Couldn't make a connection!";
exit;
}

// create SQL statement
$sql = "SELECT COFFEE_NAME, ROAST_TYPE, QUANTITY
FROM COFFEE_INVENTORY
ORDER BY QUANTITY DESC"
;

// execute SQL query and get result
$sql_result = pg_exec($connection,$sql);

// start results formatting
echo "<TABLE BORDER=1>";
echo
"<TR><TH>Coffee Name</TH><TH>Roast Type</TH><TH>Quantity</TH>";

// get number of rows in result
$num = pg_numrows($sql_result);

// format results by row
$i = 0;

while (
$i < $num) {
$row = pg_fetch_array($sql_result, $i);
$coffee_name = $row["COFFEE_NAME"];
$roast_type = $row["ROAST_TYPE"];
$quantity = $row["QUANTITY"];
echo
"<TR><TD>$coffee_name</TD><TD>$roast_type</TD><TD>$quantity</TD></TR>";
$i++;
}

echo
"</TABLE>";

// free resources and close connection
pg_freeresult($sql_result);
pg_close($connection);

?>


Please see the PHP Manual for additional PostgreSQL functions, and try using your own tables and SQL statements instead of the examples above.









Apache, PHP, and PostgreSQL on RedHat Linux
Categories : Apache, PHP, Databases, PostgreSQL, Linux
PHP and PostgreSQL
Categories : PHP, Databases, PostgreSQL
Creating Auto-incrementing ID Fields with PHP and Oracle
Categories : PHP, PHP options/info, Databases, Oracle
PHP 101 Part 8 of 15 : Databases and Other Animals
Categories : PHP, Beginner Guides, Databases
Saving Images in MySQL
Categories : MySQL, PHP, Graphics, Databases
Simple Connection to Sybase with PHP
Categories : PHP, Sybase, Databases
Custom MySQL-functions
Categories : Databases, MySQL, PHP, PHP Functions
PHP 101 Part 9 of 15 : SQLite My Fire!
Categories : PHP, Beginner Guides, Databases, SQLite
Referer Statistics
Categories : PHP, MySQL, HTTP, Databases
Simple ODBC Connections with PHP
Categories : PHP, ODBC, Databases
User identification using cookies in PHP and MySQL
Categories : PHP, Databases, MySQL, Cookies
Multicolumn Output from a Database with PHP
Categories : PHP, Databases, HTML and PHP, MySQL
Creating an IE-Only Database Driven Menu System With PHP, MySQL and DHTML
Categories : PHP, MySQL, Databases, DHTML
Simple Connection to Informix with PHP
Categories : PHP, Informix, Databases
PHP and MySQL News with Comments
Categories : PHP, Databases, MySQL
Silvio Macedo wrote : 24
Q:Doesn`t pg_fetch_array require a second
argument with row number ?
A:yes it does...



Julie Meloni wrote : 25
Yep, that previous comment is correct, and the code has been changed to reflect it.
maxime roy wrote : 381
Very useful for my project. Thanks!