數(shù)據(jù)庫相關(guān)問題
發(fā)表時間:2024-06-02 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]數(shù)據(jù)庫相關(guān)問題這節(jié)將討論PHP和數(shù)據(jù)庫之間最普通的問題?鋸埖卣f,PHP幾乎可以操作今天市面上有的所有的數(shù)據(jù)庫。 1. 我聽說PHP可以操作微軟的SQL Server.應(yīng)該怎樣做? 2. 我可以操作微軟 Access 數(shù)據(jù)庫嗎? 3. 我升級到了PHP 4, 現(xiàn)在我的mysql總是告訴我: &qu...
數(shù)據(jù)庫相關(guān)問題
這節(jié)將討論PHP和數(shù)據(jù)庫之間最普通的問題?鋸埖卣f,PHP幾乎可以操作今天市面上有的所有的數(shù)據(jù)庫。
1. 我聽說PHP可以操作微軟的SQL Server.應(yīng)該怎樣做?
2. 我可以操作微軟 Access 數(shù)據(jù)庫嗎?
3. 我升級到了PHP 4, 現(xiàn)在我的mysql總是告訴我: "Warning: MySQL: Unable to save result set in ...". 這是怎么回事?
4. 安裝完共享mysql支持后, 一裝入libphp4.so Apache 就 dumps core . 這個問題可以修復(fù)嗎?
5. 為什么我總得到這樣的錯誤消息: : "Warning: 0 is not a MySQL result index in <file> on line <x>" or "Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>?
1. 我聽說PHP可以操作微軟的SQL Server.應(yīng)該怎樣做?
在Windows平臺下, 你只要使用包里所含的ODBC驅(qū)動程序就可以了。
在Unix平臺下, 你可以使用Sybase-CT driver 來操作 Microsoft SQL Servers。因為它們的協(xié)議(至少絕大部份的產(chǎn)品) 是完全兼容的. Sybase 有一個免費的 Linux systems 版本. 對另外一些的Unix系統(tǒng)來說,你可能需要聯(lián)系 Sybase,以得到正確的庫文件 . 也可以參照下面一些問題的答案。
2. 我可以操作 Microsoft Access數(shù)據(jù)庫嗎?
是的。如果你是在 Windows 9x/Me, 或 NT/2000下運行,你已經(jīng)有了所有必須的工具。 你可以使用ODBC 和 Microsoft's ODBC drivers for Microsoft Access databases。
如果你是在 Unix 下運行PHP,想要和Windows下的 MS Access 通訊,那么你需要Unix ODBC drivers. OpenLink Software 提供了一個 Unix-based ODBC drivers。 你可以下載一個試用(不過期)的 pilot 程序, 商業(yè)版本的價格定位在 $675
另外一種辦法是使用帶 Windows ODBC驅(qū)動的 SQL server來存諸數(shù)據(jù),然后你可以用Microsoft Access (ODBC) and PHP (內(nèi)置SQL Server驅(qū)動)來操作這個庫;蛘呤褂昧硪环N文件格式, Access 和 PHP 都可以打開的, 比如操作系統(tǒng)文件或dBase 數(shù)據(jù)庫等。關(guān)于這 OpenLink software的Tim Hayes 寫了如下的文字: 在你可以使用PHP直接操作一種數(shù)據(jù)庫里,使用另外的庫作為中間件不是一個好的主意。
--例如用OpenLink's 驅(qū)動. 如果你確實需要中間件庫, OpenLink 現(xiàn)在發(fā)布了 Virtuoso (虛擬數(shù)據(jù)庫引擎), 可以運行在NT, Linux 其它的 unix平臺.
請參閱 website 免費下載.
另一個成功的范例子是使用Windows下的Mysql(通過mysql ODBC),來同步化 Access 數(shù)據(jù)庫. Steve Lawrence 寫到:
按照Mysql的指引安裝你的平臺下的Mysql. 最新版本可以從 http://www.mysql.com/ 得到(從你最近的鏡像點!). 除了設(shè)置一個Mysql的數(shù)據(jù)庫,不需要其它特別的配置, 設(shè)置用戶帳號, 你應(yīng)該把用戶的主機域 設(shè)為“%”, 確認你的服務(wù)器名、數(shù)據(jù)庫名等
在Mysql的站點上下找Mysql ODBC驅(qū)動,最新的版本應(yīng)該是 myodbc-2_50_19-win95.zip (NT)。在你的Windows下安裝它. 你可以用工具包里的工具測試安裝是否成功。
在你的 ODBC 管理器(控制面板里)里創(chuàng)建一個用戶和系統(tǒng)的dsn。建一個DSN名, 輸入你的主機名, 用戶名(mysql), 口令,端口號, 等你在第一步里設(shè)置的數(shù)據(jù)。
完全安裝Access, 這一步使你安裝必須的工具驅(qū)動.. 至少 你需要管理連接的數(shù)據(jù)庫表。
現(xiàn)在最有趣的事發(fā)生了! 建一個新的Access數(shù)據(jù)庫。 在表里右鍵,選"link Tables"(鏈接表), 或者在 “文件” 菜單 下, 選“ Get External Data ”(獲取外部數(shù)據(jù)) 然后“ Link Tables”(鏈接表). 當(dāng)對話框打開時,選擇文件類型: ODBC. 選擇系統(tǒng)DSN,你在第三步創(chuàng)建的DSN名. 然后選要鏈接的表。按“確定”, 哦! 你現(xiàn)在可以在你的Mysql管理器上打開這個表, 可以增加/編輯/刪除 數(shù)據(jù)! 你也可以建立查詢, 輸入/輸出表到 MySQL, 建立表單及報表,等.
Tips and Tricks:
你可以建立Access表,把它輸出到 MySQL, 也可以鏈接回來. 它會使創(chuàng)建表快些.
當(dāng)你在Access里創(chuàng)建表時, 必須設(shè)置主鍵。 同樣,在Mysql里連到access時,也要有主鍵。
如果你在 MySQL時選了一張表, 你不得不在Access里重新鏈接.去>add-ins>鏈接表管理器
3. 我升級到了PHP 4, 現(xiàn)在我的mysql總是告訴我: "Warning: MySQL: Unable to save result set in ...". 這是怎么回事?
大部分這樣的問題,是因為 PHP 4 編譯選項 '--with-mysql'沒有標明你的Mysql的路徑。 這樣PHP就會使用它內(nèi)建的MySQL庫. 如果你的系統(tǒng)運行在這樣的平臺下, PHP 3 作為 Apache 模塊, 或者 auth-mysql, 它們使用另外版本的Mysql驅(qū)動,這樣在兩個不同版本的Mysql客戶端驅(qū)動上就會存在沖突。
重新編譯PHP 4, 增加Mysql的路徑信息, '--with-mysql=/your/path/to/mysql' 通常都能解決這個問題。
4. 安裝完共享mysql支持后, 一裝入libphp4.so Apache 就 dumps core . 這個問題可以修復(fù)嗎?
如果你的Mysql是用 pthreads 連接的,將會發(fā)生這種情況。請使用 ldd。 如果已使用, grab the MySQL tarball and 重新編譯, 或 從源代碼rpm編譯,移去相關(guān)文件里的打開 threaded client 代碼的開關(guān) 。如果以上的兩種方法都不能修復(fù)這個錯誤,那么重新編譯新的PHP庫支持新的Mysql。
5. 為什么我總得到這樣的錯誤消息: : "Warning: 0 is not a MySQL result index in on line " or "Warning: Supplied argument is not a valid MySQL result resource in on line ?
你正在使用的結(jié)果集變量值是0。0意味著 因為某種原因你的查詢失敗了。在你取得結(jié)果集之前,你必須檢查提交查詢失敗的原因。正確的寫法應(yīng)該如下: $result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
or $result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: ".mysql_error());