2010-09-16 83 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文件中