page, you must first know how to establish a connection to MySQL from inside
a PHP script. Back in Chapter 2, you used a program called mysql that allowed
you to make such a connection. PHP has no need of any special program, however;
support for connecting to MySQL is built right into the language. The following
PHP function call establishes the connection:
mysql_connect(address, username, password);
Here, address is the IP address or host name of the computer on which the
MySQL server software is running (”localhost” if it’s running on the same
computer as the Web server software), and username and password are the same
MySQL user name and password you used to connect to the MySQL server in
Chapter 2.
You may remember that functions in PHP usually return (output) a value when
they are called. Don’t worry if this doesn’t ring any bells for you—it’s a detail that
I glossed over when I first discussed functions. In addition to doing something
useful when they are called, most functions output a value, and that value may
be stored in a variable for later use. The mysql_connect function shown above,
for example, returns a number that identifies the connection that has been established.
Since we intend to make use of the connection, we should hold onto this
value. Here’s an example of how we might connect to our MySQL server.
$dbcnx = mysql_connect(’localhost’, ‘root’, ‘mypasswd’);
As described above, the values of the three function parameters may differ for
your MySQL server. What’s important to see here is that the value returned by
mysql_connect (which we’ll call a connection identifier) is stored in a variable
named $dbcnx.
As the MySQL server is a completely separate piece of software, we must consider
the possibility that the server is unavailable or inaccessible due to a network
outage, or because the username/password combination you provided is not ac-
71
Connecting to MySQL with PHP
cepted by the server. In such cases, the mysql_connect function doesn’t return
a connection identifier, as no connection is established. Instead, it returns false.
This allows us to react to such failures using an if statement:
$dbcnx = @mysql_connect(’localhost’, ‘root’, ‘mypasswd’);
if (!$dbcnx) {
echo( ‘
Unable to connect to the ‘ .
‘database server at this time.
exit();
}
There are three new tricks in the above code fragment. First, we have placed an
@ symbol in front of the mysql_connect function. Many functions, including
mysql_connect, automatically display ugly error messages when they fail. Placing
the @ symbol (also known as the error suppression operator) in front of the
function name tells the function to fail silently, allowing us to display our own,
friendlier error message.
Next, we put an exclamation point in front of the $dbcnx variable in the condition
of the if statement. The exclamation point is the PHP negation operator, which
basically flips a false value to true, or a true value to false. Thus, if the connection
fails and mysql_connect returns false, !$dbcnx will evaluate to true, and cause
the statements in the body of our if statement to be executed. Alternatively, if
a connection was made, the connection identifier stored in $dbcnx will evaluate
to true (any number other than zero is considered “true” in PHP), so !$dbcnx
will evaluate to false, and the statements in the if statement will not be executed.
The last new trick is the exit function, which is the first example that we’ve encountered
of a function that takes no parameters. All this function does is cause
PHP to stop reading the page at this point. This is a good response to a failed
database connection, because in most cases the page will be unable to display
any useful information without that connection.
As in Chapter 2, once a connection is established, the next step is to select the
database with which you want to work. Let’s say we want to work with the joke
database we created in Chapter 2. The database we created was called jokes. Selecting
that database in PHP is just a matter of another function call:
mysql_select_db(’jokes’, $dbcnx);
Notice we use the $dbcnx variable that contains the database connection identifier
to tell the function which database connection to use. This parameter is actually
optional. When it’s omitted, the function will automatically use the link
identifier for the last connection opened. This function returns true when it’s
72
Publishing MySQL Data on the Web
successful and false if an error occurs. Once again, it’s prudent to use an if
statement to handle errors:
if (! @mysql_select_db(’jokes’) ) {
die( ‘
Unable to locate the joke ‘ .
‘database at this time.
}
Notice that this time, instead of assigning the result of the function to a variable
and then checking if the variable is true or false, I have simply used the function
call itself as the condition. This may look a little strange, but it’s a very commonly
used short cut. To check if the condition is true or false, PHP executes the function
and then checks its return value—exactly what we need to happen.
Another short cut I’ve used here is the die function. die works just like echo,
except that the script exits after it. So calling die is equivalent to a call to echo
followed by a call to exit, which is what we used for mysql_connect above.
With a connection established and a database selected, we are now ready to begin
using the data stored in the database.

No comments:
Post a Comment