为了能够顺利的使用本类函数,必须在编译 PHP 的时候添加 MySQL 的支持。
   
  编译时,只要使用
  --with-mysql[=DIR]
  配置选项即可,其中可选的
  [DIR] 指向 MySQL 的安装目录。
 
  本 MySQL 扩展库不支持 MySQL 4.1.0 以上版本全部功能。对此,可用
  MySQLi。
 
  如果要同时安装 mysql 扩展库和 mysqli 扩展库,必须使用同一个客户端库以避免任何冲突。
 
    默认开启了 --with-mysql
    选项。此默认行为可以用
    --without-mysql
    配置选项来禁止。如果启用 MySQL 而不指定安装目录的话,PHP
    将使用绑定的 MySQL 客户端连接库。
   
    还有其它应用程序使用 MySQL(例如
    auth-mysql)的用户不要用绑定的库,而要指定 MySQL 的安装目录,如这样:--with-mysql=/path/to/mysql。这将强制
    PHP 使用随 MySQL 安装的客户端连接库,就可以避免任何冲突。
   
    MySQL 默认未启用,也没有绑定的 MySQL 库。其原因见此
    FAQ。使用
    --with-mysql[=DIR]
    配置选项来加入 MySQL 的支持。可以从
    MySQL
    下载头文件和库。
   
    MySQL 默认未启用,因此必须在 php.ini 中激活
    php_mysql.dll 动态连接库。此外,PHP
    还需要访问 MySQL 客户端连接库。PHP 的 Windows
    发行版包括了一个
    libmysql.dll,为了让 PHP 能和
    MySQL 对话,此文件必须放在 Windows 的系统路径
    PATH 中。怎样做见 FAQ
    中的“怎样把 PHP
    目录加入到 Windows 路径中”。尽管将
    libmysql.dll 拷贝到 Windows
    系统目录中也可以(因为系统目录默认在系统路径
    PATH 中),但不推荐这样做。
   
    要激活任何 PHP 扩展库(例如
    php_mysql.dll),PHP 指令
    extension_dir
    要被设为 PHP 扩展库所在的目录。参见手工 Windows
    安装指南。PHP 5 下 extension_dir 取值的一个例子是
    c:\php\ext。
   
注: 
     如果启动 web 服务器时出现类似如下的错误:"Unable
     to load dynamic library './php_mysql.dll'",这是因为系统找不到
     php_mysql.dll 和/或
     libmysql.dll。
    
| 警告 | 
| 
     当同时加在本扩展库和 recode 扩展库时 PHP 可能会崩溃。更多信息见
     recode 扩展库。
     | 
注: 
     如果需要不同于
     latin(默认值)的字符集,必须安装外部的(非绑定的)已编译入所需字符集支持的
     libmysql。
    
这些函数的行为受 php.ini 的影响。
  
表格 1. MySQL 配置选项
| 选项名称 | 默认值 | 可修改范围 | 更新记录 | 
|---|
| mysql.allow_persistent | "1" | PHP_INI_SYSTEM |  | 
| mysql.max_persistent | "-1" | PHP_INI_SYSTEM |  | 
| mysql.max_links | "-1" | PHP_INI_SYSTEM |  | 
| mysql.trace_mode | "0" | PHP_INI_ALL | 自 PHP 4.3.0 起可用 | 
| mysql.default_port | NULL | PHP_INI_ALL |  | 
| mysql.default_socket | NULL | PHP_INI_ALL | 自 PHP 4.0.1 起可用 | 
| 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 | 自 PHP 4.3.0 起可用。在 PHP <= 4.3.2 时为 PHP_INI_SYSTEM | 
  有关 PHP_INI_* 常量进一步的细节与定义参见
附录 G。
 
以下是配置选项的简要解释。
  
- mysql.allow_persistent
     boolean
- 
      是否允许 MySQL
      的持久连接。
      
- mysql.max_persistent
     integer
- 
      每个进程中最大的持久连接数目。
      
- mysql.max_links
     integer
- 
      每个进程中最大的连接数,包括持久连接。
      
- mysql.trace_mode
     boolean
- 
      跟踪模式。当激活 mysql.trace_mode
      时,将会显示 table/index
      扫描的警告,未释放的结果集以及
      SQL 错误。(PHP 4.3.0 引进)
      
- mysql.default_port
     string
- 
      指定默认连接数据库的 TCP 端口号。如果没有指定默认端口号,则按顺序从
      MYSQL_TCP_PORT
      环境变量,/etc/services 文件中的 mysql-tcp
      项或者编译时指定的 MYSQL_PORT 常量中取得。Win32 环境下只会使用
      MYSQL_PORT 常量。
      
- mysql.default_socket
     string
- 
      当使用本地连接的时候,默认的 socket 名称。
      
- mysql.default_host
     string
- 
      默认连接的数据库服务器地址。不适用于 SQL 安全模式。
      
- mysql.default_user
     string
- 
      默认连接数据库时使用的用户名。不适用于 SQL 安全模式。
      
- mysql.default_password
     string
- 
      默认连接数据库时使用的密码。不适用于 SQL 安全模式。
      
- mysql.connect_timeout
     integer
- 
      连接超时秒数。在 Linux 中,此参数设定了等候来自服务器的响应的时长。
      
    在 MySQL 模块中使用了两种资源类型。第一种是数据库的连接句柄,第二种是 SQL 查询返回的结果集。
   
以下常量由本扩展模块定义,因此只有在本扩展模块被编译到
PHP 中,或者在运行时被动态加载后才有效。
  在 PHP 4.3.0 以后的版本中,允许在
  mysql_connect() 函数和 mysql_pconnect()
  函数中指定更多的客户端标记。下面列出所定义的常量:
  
表格 2. MySQL 客户端常量
| 常量 | 描述 | 
|---|
| MYSQL_CLIENT_COMPRESS | 使用压缩的通讯协议 | 
| MYSQL_CLIENT_IGNORE_SPACE | 允许在函数名后留空格位 | 
| MYSQL_CLIENT_INTERACTIVE | 允许设置断开连接之前所空闲等候的 interactive_timeout 时间(代替 wait_timeout)。 | 
| MYSQL_CLIENT_SSL | 使用 SSL 加密。本标志仅在 MySQL 客户端库版本为
        4.x 或更高版本时可用。在 PHP 4 和 Windows 版的 PHP 5
        安装包中绑定的都是 3.23.x。 | 
  mysql_fetch_array() 函数使用一个常量来表示所返回数组的类型。下面是常量的定义:
  
表格 3. MySQL fetch 常量
| 常量 | 描述 | 
|---|
| MYSQL_ASSOC | 返回的数据列使用字段名作为数组的索引名。 | 
| MYSQL_BOTH | 返回的数据列使用字段名及数字索引作为数组的索引名。 | 
| MYSQL_NUM | 返回的数据列使用数字索引作为数组的索引名。索引从 0 开始,表示返回结果的第一个字段。 | 
注: 
     大多数 MySQL 函数都接受
     link_identifier
     作为最后一个可选参数。如果未提供此参数,则使用最后一个打开的连接。如果不存在连接,则会用
     php.ini 中定义的默认参数去尝试建立连接。如果连接不成功,函数返回 FALSE。
    
    下面的简单例子演示如何连接数据库,执行查询语句,打印返回结果集和断开数据库等一系列基本的
    MySQL 操作。
    
| 例子 1. MySQL 例子 | 
<?php// 连接,选择数据库
 $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');
 
 // 执行 SQL 查询
 $query = 'SELECT * FROM my_table';
 $result = mysql_query($query) or die('Query failed: ' . mysql_error());
 
 // 用 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";
 
 // 释放结果集
 mysql_free_result($result);
 
 // 关闭连接
 mysql_close($link);
 ?>
 | 
 |