本节包括 PHP 和数据库之间关系的常见问题。 事实上, PHP 可以访问如今现有的任何数据库。
在 Unix 机器中,你可以使用 PDO_ODBC 或者 Unified ODBC API 来访问 Microsoft SQL Server 数据库。
在 Windows 机器中,你可以使用 PDO_SQLSRV 或 SQLSRV 来访问 Microsoft SQL Server 数据库。
同时,也可以参考下一个问题。
可以。如果完全在 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 写道:
当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序, 使用其它数据库做中间媒介不是一个好主意。 如果确实需要一个中间文件格式, OpenLink 已经发布了对应于 Windows NT,Linux 和其它 Unix 平台的 Virtuoso(一个虚拟数据库引擎)。 请访问我们的 » 网站来免费下载。
还有一个已被证实有效的选择是在 Windows 下用 MySQL 和它的 MyODBC 驱动来同步数据库。 Steve Lawrence 写道:
提示与技巧:
在 选择一种 MySQL API 一节中 描述了 3 中 MySQL 扩展。 不应该继续使用旧的 API 了,可能将来的某一天旧 API 就会被废弃甚至从 PHP 中移除。 当然,旧的 API 曾经是非常主流的,很多用户都用了它,所以这个被废弃及移除的过程不会太快。 但是仍然强烈建议使用 mysqli 或 PDO_MySQL 来访问 MySQL 数据库。
自动迁移脚本目前还没有。 mysqli API 包括了面向过程和面向对象的两种风格的调用方式,并且面向过程的版本中提供的 API 和 ext/mysql 是非常相似的。
不可以同时混合使用这几种 MySQL API。 例如,你不可以把一个 mysqli 的连接资源传入到 PDO_MySQL 或者 ext/mysql 中去使用。
你试图用一个值为 0 的结果资源号。 0 表示你的查询由于某原因失败了, 需要在提交查询之后 和在使用返回结果资源号之前检查错误。 正确的方法是用类似如下的代码:
<?php
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
?>
<?php
$result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: " . mysql_error());
?>