25.3. MySQL PHP API
- 25.3.1. 使用MySQL和PHP的常见问题
PHP是一种服务器端、HTML嵌入式脚本处理语言,可使用该语言创建动态网页。它可用于大多数操作系统和Web服务器,也能访问大多数常见数据库,包括MySQL。PHP可以作为单独程序运行,也能编译为模块,用于Apache Web服务器。
PHP实际上提供了两种不同的MySQL API扩展:
·mysql:适用于PHP版本4和5,该扩展用于MySQL 4.1之前的MySQL版本。该扩展不支持MySQL 5.1中采用的、改进的鉴定协议,也不支持与预处理语句或多语句。如果打算与MySQL 5.1一起使用该扩展,应配置MySQL服务器,以使用“--old-passwords”选项(请参见A.2.3节,“客户端不支持鉴定协议”)。在PHP网站的文档中记录了该该扩展http://php.net/mysql。
·mysqli是“MySQL, Improved”的缩写,该扩展仅适用于PHP 5。它能用于MySQL 4.1.1和更高版本。该扩展完全支持MySQL 5.1中采用的鉴定协议,也支持预处理语句和多语句API。此外,该扩展还提供了先进的、面向对象的编程接口。在http://php.net/mysqli上,可找到关于mysqli扩展的文档。在http://www.zend.com/php5/articles/php5-mysqli.php处,给出了一篇有用的文章。
PHP分发版和文档均能从PHP网站获得。
25.3.1. 使用MySQL和PHP的常见问题
·错误:超出了最大执行时间,这是一种PHP限制,如果需要,进入文件php.ini,并设置最大执行时间(开始为30秒)。此外,还可以将每脚本允许使用的RAM增加一倍,从8MB变为16MB,这也是个不错的主意。
·致命错误:在…中调用了不支持或未定义的mysql_connect()函数,这意味着,你的PHP版本不支持MySQL。你可以编译动态MySQL模块并将其加载到PHP,或使用内置的MySQL支持重新编译PHP。在PHP手册中,详细介绍了该进程。
·错误:对'uncompress'的未定义引用,这意味着所编译的客户端库支持压缩客户端/服务器协议。更正方法是,用“-lmysqlclient”进行链接时,在最后添加“-lz”。
·错误:客户端不支持鉴定协议,与MySQL 4.1.1和更高版本一起使用较旧的mysql扩展时常会遇到该问题。可能的解决方案是:降级到MySQL 4.0,转向PHP 5和较新的mysqli扩展,或用“--old-passwords”配置MySQL服务器(更多信息,请参见A.2.3节,“客户端不支持鉴定协议”)。