使用PEAR无法连接到数据库php
在我的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界面只是把我送到一个找不到网页。
我是否缺少软件包?请指教!谢谢。
PEAR :: DB已被MDB2取代,并且自2007年以来未更新。有关您遇到的错误消息的bug report已归档,但从未解决。
您可能需要使用PDO而尝试。在一个标准的现代PHP安装在严格模式下运行时
DB的过时,将引发相当多的警告。对此,其继任者MDB2也是如此。警告不是致命的,他们只是指出:: connect()“方法”设置不正确。
它仍然工作,只是忽略了警告。但考虑升级到像PDO这样更现代的东西。
我也有这个问题。会发生什么情况是,PEAR DB是为使用PHP 4.X类语法而量身定制的,而GoDaddy显然已安装PHP 5.X--这意味着您会得到这些错误。虽然他们不会被标记为“致命”,但他们的行为却是致命的错误 - 这些方法根本不会被调用。
如果你有机会到PEAR源,你有没有其他选择,但要经过的记录,一个接一个出现的每项功能和函数声明前添加“静态”的关键字。这是一个痛苦,但它是唯一的选择。我今天成功地完成了这项工作 - 我有一个非常旧的应用程序来维护它,仍然需要PEAR DB才能运行,而最新的PHP自动升级(目前PHP 5.3.X)已经破坏了数据库连接。移植整个应用程序以使用MDB2(推荐的选择)不是一种选择,因此添加一两个“静态”关键字对我来说是个诀窍。
但如果你从头开始一个项目,并没有遗留代码维护,我肯定建议你放弃DB和移动到MDB2代替。
disable error_reporting = E_ALL | E_STRICT在你的php ini文件中