數據庫相關問題

數據庫相關問題 這節將討論PHP和數據庫之間最普通的問題。誇張地說,PHP幾乎可以操作今天市面上有的所有的數據庫。 1. 我聽說PHP可以操作微軟的SQL Server.應該怎樣做? 2. 我可以操作微軟 Access 數據庫嗎? 3. 我升級到瞭PHP 4, 現在我的mysql總是告訴我: "Warning: MySQL: Unable to save result set in …". 這是怎麼回事? 4. 安裝完共享mysql支持後, 一裝入libphp4.so Apache 就 dumps core . 這個問題可以修復嗎? 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 ? 1. 我聽說PHP可以操作微軟的SQL Server.應該怎樣做? 在Windows平臺下, 你隻要使用包裡所含的ODBC驅動程序就可以瞭。 在Unix平臺下, 你可以使用Sybase-CT driver 來操作 Microsoft SQL Servers。因為它們的協議(至少絕大部份的產品) 是完全兼容的. Sybase 有一個免費的 Linux systems 版本. 對另外一些的Unix系統來說,你可能需要聯系 Sybase,以得到正確的庫文件 . 也可以參照下面一些問題的答案。 2. 我可以操作 Microsoft Access數據庫嗎? 是的。如果你是在 Windows 9x/Me, 或 NT/2000下運行,你已經有瞭所有必須的工具。 你可以使用ODBC 和 Microsofts ODBC drivers for Microsoft Access databases。 如果你是在 Unix 下運行PHP,想要和Windows下的 MS Access 通訊,那麼你需要Unix ODBC drivers. OpenLink Software 提供瞭一個 Unix-based ODBC drivers。 你可以下載一個試用(不過期)的 pilot 程序, 商業版本的價格定位在 $675 另外一種辦法是使用帶 Windows ODBC驅動的 SQL server來存諸數據,然後你可以用Microsoft Access (ODBC) and PHP (內置SQL Server驅動)來操作這個庫。或者使用另一種文件格式, Access 和 PHP 都可以打開的, 比如操作系統文件或dBase 數據庫等。關於這 OpenLink software的Tim Hayes 寫瞭如下的文字: 在你可以使用PHP直接操作一種數據庫裡,使用另外的庫作為中間件不是一個好的主意。 –例如用OpenLinks 驅動. 如果你確實需要中間件庫, OpenLink 現在發佈瞭 Virtuoso (虛擬數據庫引擎), 可以運行在NT, Linux 其它的 unix平臺. 請參閱 website 免費下載. 另一個成功的范例子是使用Windows下的Mysql(通過mysql ODBC),來同步化 Access 數據庫. Steve Lawrence 寫到: 按照Mysql的指引安裝你的平臺下的Mysql. 最新版本可以從 https://www.mysql.com/ 得到(從你最近的鏡像點!). 除瞭設置一個Mysql的數據庫,不需要其它特別的配置, 設置用戶帳號, 你應該把用戶的主機域 設為“%”, 確認你的服務器名、數據庫名等 在Mysql的站點上下找Mysql ODBC驅動,最新的版本應該是 myodbc-2_50_19-win95.zip (NT)。在你的Windows下安裝它. 你可以用工具包裡的工具測試安裝是否成功。 在你的 ODBC 管理器(控制面板裡)裡創建一個用戶和系統的dsn。建一個DSN名, 輸入你的主機名, 用戶名(mysql), 口令,端口號, 等你在第一步裡設置的數據。 完全安裝Access, 這一步使你安裝必須的工具驅動.. 至少 你需要管理連接的數據庫表。 現在最有趣的事發生瞭! 建一個新的Access數據庫。 在表裡右鍵,選"link Tables"(鏈接表), 或者在 “文件” 菜單 下, 選“ Get External Data ”(獲取外部數據) 然後“ Link Tables”(鏈接表). 當對話框打開時,選擇文件類型: ODBC. 選擇系統DSN,你在第三步創建的DSN名. 然後選要鏈接的表。按“確定”, 哦! 你現在可以在你的Mysql管理器上打開這個表, 可以增加/編輯/刪除 數據! 你也可以建立查詢, 輸入/輸出表到 MySQL, 建立表單及報表,等. Tips and Tricks: 你可以建立Access表,把它輸出到 MySQL, 也可以鏈接回來. 它會使創建表快些. 當你在Access裡創建表時, 必須設置主鍵。 同樣,在Mysql裡連到access時,也要有主鍵。 如果你在 MySQL時選瞭一張表, 你不得不在Access裡重新鏈接.去>add-ins>鏈接表管理器 3. 我升級到瞭PHP 4, 現在我的mysql總是告訴我: "Warning: MySQL: Unable to save result set in …". 這是怎麼回事? 大部分這樣的問題,是因為 PHP 4 編譯選項 –with-mysql沒有標明你的Mysql的路徑。 這樣PHP就會使用它內建的MySQL庫. 如果你的系統運行在這樣的平臺下, PHP 3 作為 Apache 模塊, 或者 auth-mysql, 它們使用另外版本的Mysql驅動,這樣在兩個不同版本的Mysql客戶端驅動上就會存在沖突。 重新編譯PHP 4, 增加Mysql的路徑信息, –with-mysql=/your/path/to/mysql 通常都能解決這個問題。 4. 安裝完共享mysql支持後, 一裝入libphp4.so Apache 就 dumps core . 這個問題可以修復嗎? 如果你的Mysql是用 pthreads 連接的,將會發生這種情況。請使用 ldd。 如果已使用, grab the MySQL tarball and 重新編譯, 或 從源代碼rpm編譯,移去相關文件裡的打開 threaded client 代碼的開關 。如果以上的兩種方法都不能修復這個錯誤,那麼重新編譯新的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 ? 你正在使用的結果集變量值是0。0意味著 因為某種原因你的查詢失敗瞭。在你取得結果集之前,你必須檢查提交查詢失敗的原因。正確的寫法應該如下: $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());

You May Also Like