PHP is a server-side, HTML-embedded scripting language that may be used to create dynamic Web pages. It is available for most operating systems and Web servers, and can access most common databases, including MySQL. PHP may be run as a separate program or compiled as a module for use with the Apache Web server.
PHP actually provides two different MySQL API extensions:
mysql
: Available for PHP versions 4 and 5,
this extension is intended for use with MySQL versions prior
to MySQL 4.1. This extension does not support the improved
authentication protocol used in MySQL 5.0, nor
does it support prepared statements or multiple statements. If
you wish to use this extension with MySQL 5.0,
you will likely want to configure the MySQL server to use the
--old-passwords option (see
Section A.2.3, “Client does not support authentication protocol
”). This extension is documented on
the PHP Web site at http://php.net/mysql.
mysqli
- Stands for “MySQL,
Improved”; this extension is available only in PHP 5.
It is intended for use with MySQL 4.1.1 and later. This
extension fully supports the authentication protocol used in
MySQL 5.0, as well as the Prepared Statements and
Multiple Statements APIs. In addition, this extension provides
an advanced, object-oriented programming interface. You can
read the documentation for the mysqli
extension at http://php.net/mysqli. A helpful
article can be found at
http://www.zend.com/php5/articles/php5-mysqli.php.
If you're experiencing problems with enabling both the
mysql
and the mysqli
extension when building PHP on Linux yourself, see
Section 22.3.2, “Enabling Both mysql
and mysqli
in
PHP”.
The PHP distribution and documentation are available from the
PHP Web site. MySQL
provides the mysql
and
mysqli
extensions for the Windows operating
system for MySQL versions as of 5.0.18 on
http://dev.mysql.com/downloads/connector/php/.
You can find information why you should preferably use the
extensions provided by MySQL on that page.
Error: Maximum Execution Time Exceeded
:
This is a PHP limit; go into the
php.ini
file and set the maximum
execution time up from 30 seconds to something higher, as
needed. It is also not a bad idea to double the RAM allowed
per script to 16MB instead of 8MB.
Fatal error: Call to unsupported or undefined
function mysql_connect() in ...
: This means that
your PHP version isn't compiled with MySQL support. You can
either compile a dynamic MySQL module and load it into PHP
or recompile PHP with built-in MySQL support. This process
is described in detail in the PHP manual.
Error: Undefined reference to
'uncompress'
: This means that the client library
is compiled with support for a compressed client/server
protocol. The fix is to add -lz
last when
linking with -lmysqlclient
.
Error: Client does not support authentication
protocol
: This is most often encountered when
trying to use the older mysql
extension
with MySQL 4.1.1 and later. Possible solutions are:
downgrade to MySQL 4.0; switch to PHP 5 and the newer
mysqli
extension; or configure the MySQL
server with --old-passwords
. (See
Section A.2.3, “Client does not support authentication protocol
”, for more information.)
Those with PHP4 legacy code can make use of a compatibility layer for the old and new MySQL libraries, such as this one: http://www.coggeshall.org/oss/mysql2i.
If you're experiencing problems with enabling both the
mysql
and the mysqli
extension when building PHP on Linux yourself, you should try
the following procedure.
Configure PHP like this:
./configure --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr
Edit the Makefile
and search for a line
that starts with EXTRA_LIBS
. It might
look like this (all on one line):
EXTRA_LIBS = -lcrypt -lcrypt -lmysqlclient -lz -lresolv -lm -ldl -lnsl -lxml2 -lz -lm -lxml2 -lz -lm -lmysqlclient -lz -lcrypt -lnsl -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lcrypt
Remove all duplicates, so that the line looks like this (all on one line):
EXTRA_LIBS = -lcrypt -lcrypt -lmysqlclient -lz -lresolv -lm -ldl -lnsl -lxml2
Build and install PHP:
make make install