2010-09-16 41 views
1

在我的GoDaddy託管帳戶中,使用PEAR連接數據庫時遇到了一些問題。 我可以用標準的mysql_connect連接到我的數據庫。使用PEAR無法連接到數據庫php

我已經下載從DB包: http://pear.php.net/package/DB

首先,我已經包括了包裝(工作):

include 'libs/pear/db/DB.php'; 

然後,我連接:

$dsn = array(
    'phptype' => "mysql", 
    'hostspec' => $hostname, 
    'database' => $dbname, 
    'username' => $username, 
    'password' => $password 
); 

$conn = DB::connect($dsn); 

if (DB::isError ($conn)) 
    die ("Cannot connect: " . $conn->getMessage() . "\n"); 

然而,這是行不通的。事實上,如果我在$ conn = DB :: connect($ dsn)之間放置一個die,如果(DB :: isError($ conn)),它不顯示。它就像腳本在DB :: connect上結束一樣。

我用盡開啓錯誤有:

ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 

我也得到:

Strict Standards: Non-static method DB::connect() should not be called statically in /path/t.php on line 27 

Strict Standards: Non-static method DB::parseDSN() should not be called statically in /path/DB.php on line 520 

這不是致命的錯誤,所以它shoudldn't導致腳本死?

我不能去錯誤日誌,GoDaddys web界面只是把我送到一個找不到網頁。

我是否缺少軟件包?請指教!謝謝。

回答

1

PEAR :: DB已被MDB2取代,並且自2007年以來未更新。有關您遇到的錯誤消息的bug report已歸檔,但從未解決。

您可能需要使用PDO而嘗試。在一個標準的現代PHP安裝在嚴格模式下運行時

1

DB的過時,將引發相當多的警告。對此,其繼任者MDB2也是如此。警告不是致命的,他們只是指出:: connect()「方法」設置不正確。

它仍然工作,只是忽略了警告。但考慮升級到像PDO這樣更現代的東西。

0

我也有這個問題。會發生什麼情況是,PEAR DB是爲使用PHP 4.X類語法而量身定製的,而GoDaddy顯然已安裝PHP 5.X--這意味着您會得到這些錯誤。雖然他們不會被標記爲「致命」,但他們的行爲卻是致命的錯誤 - 這些方法根本不會被調用。

如果你有機會到PEAR源,你有沒有其他選擇,但要經過的記錄,一個接一個出現的每項功能和函數聲明前添加「靜態」的關鍵字。這是一個痛苦,但它是唯一的選擇。我今天成功地完成了這項工作 - 我有一個非常舊的應用程序來維護它,仍然需要PEAR DB才能運行,而最新的PHP自動升級(目前PHP 5.3.X)已經破壞了數據庫連接。移植整個應用程序以使用MDB2(推薦的選擇)不是一種選擇,因此添加一兩個「靜態」關鍵字對我來說是個訣竅。

但如果你從頭開始一個項目,並沒有遺留代碼維護,我肯定建議你放棄DB和移動到MDB2代替。

1

disable error_reporting = E_ALL | E_STRICT在你的php ini文件中