<html>
<head>
   <title>PHP Accessing a Postgres Database</title>
<head>   
  

<body>

<h1>Teach Yourself Database</h1>

<?php // This denotes a PHP script

// Good idea to define parameters for your database connection here - easy to change
$dbHost "dhansen.cs.georgefox.edu";
$dbDatabase "teach_yourself";
$dbUsername "csis314";
$dbPassword "php";

// Create a connection to the database - the string is
// database-specific. Note that Postgres' connection string includes 
// the username and password while the the PDO constructor expects them 
// to be passed as parameters. So for Postgres it's a little redundant.
// This connection uses "persistent connections" which are more
// efficient if we have many scripts using the same database 
try {
   
$connection 
      new 
PDO("pgsql:dbname='$dbDatabase' host='$dbHost' password='$dbPassword' user='$dbUsername'",
              
$dbUsername$dbPassword, array( PDO::ATTR_PERSISTENT => true));

catch (
PDOException $e) {
    print 
"Error!: " $e->getMessage() . "<br/>";
    die();
}

// Execute a query - the query() method returns a result set while the 
// exec() method is used for non-select queries and returns the number 
// of rows affected
$result $connection->query("select cust_name from customers");

// Iterate over the result set and retrieve each row. This is an 
// alternative to iteratively fetching each row using the fetch() method
foreach ($result as $resultRow) {
   
// Display the variable named cust_name, separated by paragraph tags
   
echo "{$resultRow['cust_name']}<p>";
}
 
// Close the cursor
$result->closeCursor();



// Another example that uses a "prepared statement" and a parameter to 
// search the database. The ':cust_name' is a variable that will be 
// filled in when we execute the query
$query $connection->prepare("select * from customers where cust_name = :cust_name");

// Execute the query with a map of values to bind to the named 
// variables in the query
$query->execute(array(':cust_name'=>'Fun4All'));

foreach (
$query->fetchAll() as $resultRow) {
   foreach (
$resultRow as $attribute => $value) {
      
// Display each attribute identifier and the value, 
      // separated by paragraph tags. Note that the query returns
      // the data accessible by both a numeric index AND the 
      // attribute name
      
echo "$attribute => $value<p>";
   }
}
$query->closeCursor();

?> 

</body>
</html>