本節包括 PHP 和數據庫之間關(guān)系的常見(jiàn)問(wèn)題。 事實(shí)上, PHP 可以訪(fǎng)問(wèn)如今現有的任何數據庫。
在 Unix 機器中,你可以使用 PDO_ODBC 或者 Unified ODBC API 來(lái)訪(fǎng)問(wèn) Microsoft SQL Server 數據庫。
在 Windows 機器中,你可以使用 PDO_SQLSRV 或 SQLSRV 來(lái)訪(fǎng)問(wèn) Microsoft SQL Server 數據庫。
同時(shí),也可以參考下一個(gè)問(wèn)題。
可以。如果完全在 Windows 9x/Me/NT/2000 下運行,那已經(jīng)有了所有所需的工具, 可以用 ODBC 和 Microsoft's ODBC drivers for Microsoft Access database。
如果在 Unix 下運行 PHP 而想訪(fǎng)問(wèn) Windows 中的 MS Access, 那需要 Unix ODBC 驅動(dòng)程序。 ? OpenLink Software 有一個(gè)基于 Unix 的 ODBC 驅動(dòng)程序可以做這件事。
另外一個(gè)替代方案是用帶 Windows ODBC 驅動(dòng)的 SQL Server 并用它來(lái)儲存數據, 可以通過(guò) Microsoft Access(用 ODBC)和 PHP(用內置驅動(dòng))來(lái)訪(fǎng)問(wèn), 或者用一個(gè) Access 和 PHP 都識別的中間文件格式, 例如 flat 文件或者 dBase 數據庫。 關(guān)于這一點(diǎn) OpenLink Software 的 Tim Hayes 寫(xiě)道:
當可以通過(guò) ODBC 直接從 PHP 訪(fǎng)問(wèn)數據庫時(shí)——例如用 OpenLink 的驅動(dòng)程序, 使用其它數據庫做中間媒介不是一個(gè)好主意。 如果確實(shí)需要一個(gè)中間文件格式, OpenLink 已經(jīng)發(fā)布了對應于 Windows NT,Linux 和其它 Unix 平臺的 Virtuoso(一個(gè)虛擬數據庫引擎)。 請訪(fǎng)問(wèn)我們的 ? 網(wǎng)站來(lái)免費下載。
還有一個(gè)已被證實(shí)有效的選擇是在 Windows 下用 MySQL 和它的 MyODBC 驅動(dòng)來(lái)同步數據庫。 Steve Lawrence 寫(xiě)道:
提示與技巧:
在 選擇一種 MySQL API 一節中 描述了 3 中 MySQL 擴展。 不應該繼續使用舊的 API 了,可能將來(lái)的某一天舊 API 就會(huì )被廢棄甚至從 PHP 中移除。 當然,舊的 API 曾經(jīng)是非常主流的,很多用戶(hù)都用了它,所以這個(gè)被廢棄及移除的過(guò)程不會(huì )太快。 但是仍然強烈建議使用 mysqli 或 PDO_MySQL 來(lái)訪(fǎng)問(wèn) MySQL 數據庫。
自動(dòng)遷移腳本目前還沒(méi)有。 mysqli API 包括了面向過(guò)程和面向對象的兩種風(fēng)格的調用方式,并且面向過(guò)程的版本中提供的 API 和 ext/mysql 是非常相似的。
不可以同時(shí)混合使用這幾種 MySQL API。 例如,你不可以把一個(gè) mysqli 的連接資源傳入到 PDO_MySQL 或者 ext/mysql 中去使用。
你試圖用一個(gè)值為 0 的結果資源號。 0 表示你的查詢(xún)由于某原因失敗了, 需要在提交查詢(xún)之后 和在使用返回結果資源號之前檢查錯誤。 正確的方法是用類(lèi)似如下的代碼:
<?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());
?>