用PEAR php无法连接数据库

时间:2010-09-16 21:58:35

标签: php mysql pear

我在GoDaddy托管帐户上使用PEAR连接到数据库时遇到了一些麻烦。 我能够使用标准的mysql_connect连接到我的数据库。

我从以下位置下载了数据库包: 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);如果(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

哪些不是致命错误,所以它不会导致脚本死亡?

我无法访问错误日志,因为GoDaddys网络界面只是将我发送到未找到的页面。

我错过了包裹吗?请指教!感谢。

4 个答案:

答案 0 :(得分:1)

PEAR :: DB已被MDB2取代,自2007年以来一直没有更新。有关您遇到的错误消息的bug report已归档,但从未解决。

您可能希望尝试使用PDO

答案 1 :(得分:1)

DB已经过时了,在标准的现代PHP安装上以严格模式运行时会发出很多警告。就此而言,它的继任者MDB2也是如此。警告不是致命的,他们只是指出:: connect()“方法”设置不正确。

它仍然可以工作,只需忽略警告。但是考虑升级到像PDO这样更现代的东西。

答案 2 :(得分:1)

禁用error_reporting = E_ALL |你的php ini文件中的E_STRICT

答案 3 :(得分:0)

我也有这个问题。会发生什么是PEAR DB适合使用PHP 4.X类语法,而GoDaddy显然安装了PHP 5.X - 这意味着您会收到这些错误。虽然它们没有被标记为“致命”,但它们却表现为致命的错误 - 这些方法根本就没有被调用。

如果您有权访问PEAR源,则除了通过日志中显示的每个函数之外,您没有其他选择,并且在函数声明之前添加“static”关键字。这是一种痛苦,但这是唯一的选择。我今天刚刚成功完成了这项工作 - 我有一个非常古老的应用程序要维护,仍然需要PEAR DB才能运行,最新的PHP自动升级(目前是PHP 5.3.X)破坏了数据库连接。移植整个应用程序以使用MDB2(建议的选择)不是一个选项,因此添加十几个或两个“静态”关键字对我来说是个窍门。

但是,如果您从头开始创建项目,并且没有遗留代码可以维护,我绝对建议您放弃DB并转而使用MDB2。