本节包括 PHP 和数据库之间关系的常见问题。是的,PHP 事实上可以访问如今现有的任何数据库。
- 52.1. 听说 PHP 有可能访问 Microsoft SQL Server,怎样访问?
- 52.2. 能访问 Microsoft Access 数据库吗?
- 52.3. 我升级到了 PHP 4,结果 MySQL 不断报告“Warning: MySQL: Unable to save result set in ..”,这是怎么回事?
- 52.4. PHP 5 不再绑定 MySQL 客户端库,这对我意味着什么?我还能在 PHP 中使用 MySQL 吗?我试着使用 MySQL 结果得到“function undefined”错误,怎么办?
- 52.5. 在安装共享 MySQL 支持之后,只要一加载 libphp4.so,Apache就会 core dump。这个问题能解决吗?
- 52.6. 为什么我得到类似如下的错误:“Warning: 0 is not a MySQL result index in <file> on line <x>”或者“Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>”?
| 52.1. | 听说 PHP 有可能访问 Microsoft SQL Server,怎样访问? |
在 Windows 机器中,可以简单地使用内置的 ODBC 支持和正确的 ODBC 驱动程序。 在 Unix 机器中,可以用 Sybase-CT 驱动程序来访问 Microsoft SQL Server,因为它们的协议是(至少大部分)兼容的。Sybase 做了一个 » Linux 系统下所需库的免费版本。对于其它 Unix 操作系统,需要和 Sybase 联系来得到正确的库。同样也看看下一个问题的回答。 | |
| 52.2. | 能访问 Microsoft Access 数据库吗? |
可以。如果完全在 Windows 9x/Me/NT/2000 下运行,那已经有了所有所需的工具,可以用 ODBC 和 Microsoft's ODBC drivers for Microsoft Access database。 如果在 Unix 下运行 PHP 而想访问 Windows 中的 MS Access,那需要 Unix ODBC 驱动程序。» OpenLink Software 有一个基于 Unix 的 ODBC 驱动程序可以做这件事。 另外一个替代方案是用带 Windows ODBC 驱动的 SQL Server 并用它来储存数据,可以通过 Microsoft Access(用 ODBC)和 PHP(用内置驱动)来访问,或者用一个 Access 和 PHP 都识别的中间文件格式,例如 flat 文件或者 dBase 数据库。关于这一点 OpenLink Software 的 Tim Hayes 写道:
还有一个已被证实有效的选择是在 Windows 下用 MySQL 和它的 MyODBC 驱动来同步数据库。Steve Lawrence 写道:
提示与技巧:
| |
| 52.3. | 我升级到了 PHP 4,结果 MySQL 不断报告“Warning: MySQL: Unable to save result set in ..”,这是怎么回事? |
看上去最有可能的是,PHP 4 在编译时使用了 --with-mysql 选项但没有指定 MySQL 的路径。这意味着 PHP 使用了它自己内置的 MySQL 客户端库。如果你的系统运行了使用其它版本的 MySQL 客户端库的应用程序,例如作为 Apache 模块的 PHP 3,那么在两个不同版本的客户端之间有冲突。 重新编译 PHP 4,并在标记中加上 MySQL 的路径“--with-mysql=/your/path/to/mysql”通常会解决此问题。 | |
| 52.4. | PHP 5 不再绑定 MySQL 客户端库,这对我意味着什么?我还能在 PHP 中使用 MySQL 吗?我试着使用 MySQL 结果得到“function undefined”错误,怎么办? |
是的。PHP 总是支持 MySQL 的,不是这种方法就是那种方法。在 PHP 5 中唯一的改变就是不再绑定客户端库本身了。部分原因是(无特定顺序):
事实上这并不会影响到太多人。UNIX 用户,起码是那些知道自己在做什么的人,往往会在编译 PHP 时通过 --with-mysql=/usr 将其绑定到自己系统中的 libmyqlclient 库上。Windows 用户可以在 php.ini 中激活 php_mysql.dll 扩展库。更多细节见 MySQL 函数中的安装指南。此外,确认 libmysql.dll 在系统路径中。具体怎样做的详情,请阅读 FAQ 中的设定 Windows 系统路径。因为 libmysql.dll(以及很多其它 PHP 有关文件)存放于 PHP 目录中,可能需要将 PHP 目录加入到系统路径中。 | |
| 52.5. | 在安装共享 MySQL 支持之后,只要一加载 libphp4.so,Apache就会 core dump。这个问题能解决吗? |
如果你的 MySQL 库依靠 pthreads 连接就会这样。检查是否使用了 ldd。如果有的话,下载 MySQL 源程序编译,或者从源 rpm 的 spec 文件中去掉打开 threaded client 的选项然后重新编译。以上任一建议会解决此问题。然后再加上新的 MySQL 库重新编译 PHP。 | |
| 52.6. | 为什么我得到类似如下的错误:“Warning: 0 is not a MySQL result index in <file> on line <x>”或者“Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>”? |
你试图用一个值为 0 的结果资源号。0 表示你的查询由于某原因失败了,需要在提交查询之后和在使用返回结果资源号之前检查错误。正确的方法是用类似如下的代码:
<?php
<?php |
add a note
User Contributed Notes数据库问题

获取 PHP