In order to have these functions available, you must compile PHP with MySQL support.
By using the --with-mysql[=DIR] configuration option you enable PHP to access MySQL databases.
In PHP 4, the option --with-mysql is enabled by default. To disable this default behavior, you may use the --without-mysql configure option.
Also in PHP 4, if you enable MySQL without specifying the path to the MySQL install DIR, PHP will use the bundled MySQL client libraries. In Windows, there is no DLL, it's simply built into PHP 4.
Users who run other applications that use MySQL (for example, auth-mysql) should not use the bundled library, but rather specify the path to MySQL's install directory, like so: --with-mysql=/path/to/mysql. This will force PHP to use the client libraries installed by MySQL, thus avoiding any conflicts.
In PHP 5, MySQL is no longer enabled by default, nor is the MySQL library bundled with PHP. Read this
FAQ for details on why.
Note: Windows users will need to enable php_mysql.dll inside of php.ini and either copy libmysql.dll into the
Windows system directory, or make it available to the PATH.
This will fix "Unable to load dynamic library './php_mysql.dll'" errors.
For compiling, simply use --with-mysql=[DIR] where [DIR] points to your MySQL installation directory.
This MySQL extension doesn't support full functionality of MySQL versions greater than 4.1.0. For that, use MySQLi.
If you would like to install the mysql extension along with the mysqli extension you have to use the same client library to avoid any conflicts.
| Warning |
|
Crashes and startup problems of PHP may be encountered when loading this extension in conjunction with the recode extension. See the recode extension for more
information.
|
Note: If you need charsets other than latin (default), you have to install external (not bundled) libmysql with compiled charset
support.
The behaviour of these functions is affected by settings in php.ini.
Table 1. MySQL Configuration Options
| Name |
Default |
Changeable |
| mysql.allow_persistent |
"On" |
PHP_INI_SYSTEM |
| mysql.max_persistent |
"-1" |
PHP_INI_SYSTEM |
| mysql.max_links |
"-1" |
PHP_INI_SYSTEM |
| mysql.trace_mode |
"Off" |
PHP_INI_ALL |
| mysql.default_port |
NULL |
PHP_INI_ALL |
| mysql.default_socket |
NULL |
PHP_INI_ALL |
| mysql.default_host |
NULL |
PHP_INI_ALL |
| mysql.default_user |
NULL |
PHP_INI_ALL |
| mysql.default_password |
NULL |
PHP_INI_ALL |
| mysql.connect_timeout |
"60" |
PHP_INI_ALL |
For further details and definition of the PHP_INI_* constants see
ini_set().
Here's a short explanation of the configuration directives.
- mysql.allow_persistent boolean
-
Whether to allow persistent connections to MySQL.
- mysql.max_persistent integer
-
The maximum number of persistent MySQL connections per process.
- mysql.max_links integer
-
The maximum number of MySQL connections per process, including persistent connections.
- mysql.trace_mode boolean
-
Trace mode. When mysql.trace_mode is enabled, warnings for table/index scans, non free result sets, and SQL-Errors will be displayed. (Introduced in PHP 4.3.0)
- mysql.default_port string
-
The default TCP port number to use when connecting to the database server if no other port is specified. If no default is specified, the port will be obtained from the MYSQL_TCP_PORT environment variable, the mysql-tcp entry in /etc/services or the compile-time MYSQL_PORT constant, in that order. Win32 will only use the MYSQL_PORT constant.
- mysql.default_socket string
-
The default socket name to use when connecting to a local database server if no other socket name is specified.
- mysql.default_host string
-
The default server host to use when connecting to the database server if no other host is specified. Doesn't apply in safe mode.
- mysql.default_user string
-
The default user name to use when connecting to the database server if no other name is specified. Doesn't apply in safe mode.
- mysql.default_password string
-
The default password to use when connecting to the database server if no other password is specified. Doesn't apply in safe mode.
- mysql.connect_timeout integer
-
Connect timeout in seconds. On Linux this timeout is also used for waiting for the first answer from the server.
There are two resource types used in the MySQL module. The first one is the link identifier for a database connection, the second a resource which holds the result of a query.
The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.
Since PHP 4.3.0 it is possible to specify additional client flags for the mysql_connect() and mysql_pconnect() functions. The following constants are defined:
Table 2. MySQL client constants
| Constant |
Description |
| MYSQL_CLIENT_COMPRESS |
Use compression protocol |
| MYSQL_CLIENT_IGNORE_SPACE |
Allow space after function names |
| MYSQL_CLIENT_INTERACTIVE |
Allow interactive_timeout seconds (instead of wait_timeout) of inactivity before closing the connection. |
| MYSQL_CLIENT_SSL |
Use SSL encryption. This flag is only available with version 4.x of the MySQL client library or newer. Version 3.23.x is bundled both with PHP 4 and Windows binaries of PHP 5. |
The function mysql_fetch_array() uses a constant for the different types of result arrays. The following constants are
defined:
Table 3. MySQL fetch constants
| Constant |
Description |
| MYSQL_ASSOC |
Columns are returned into the array having the fieldname as the array index. |
| MYSQL_BOTH |
Columns are returned into the array having both a numerical index and the fieldname as the array index. |
| MYSQL_NUM |
Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result. |
This simple example shows how to connect, execute a query, print resulting rows and disconnect from a MySQL database.
Example 1. MySQL extension overview example
<?php // Connecting, selecting database $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully'; mysql_select_db('my_database') or die('Could not select database');
// Performing SQL query $query = 'SELECT * FROM my_table'; $result = mysql_query($query) or
die('Query failed: ' . mysql_error());
// Printing results in HTML echo "<table>\n";
while ($line = mysql_fetch_array($result,
MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Free resultset mysql_free_result($result);
// Closing connection mysql_close($link); ?> |
|