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