不应静态调用非静态方法DB :: connect()

时间:2013-07-19 22:19:00

标签: php warnings

最近将我们的服务器升级到5.4并开始收到以下错误

Non-static method DB::connect() should not be called statically

我已经研究过这个& amp;向下,提出的每个解决方案都没有奏效。我尝试在文件级别,目录级别和服务器级别关闭严格的错误报告。浏览器中出现的实际错误是:

DB Error: connect failed module: /path/to/login_class.php line: 49

编辑:发布lib_app.php的完整代码:

<?php
/*--------------------------------------------------------------------------

 $RCSfile: lib_app.php,v $ 

 Purpose:   Defines App class. This class is a container for 
            application global variables such as database 
            connection.

 Copyright: 2003 ** Author Omitted **

---------------------------------------------------------------------------
    Functions:

    - none

    Classes:

        App - global application class, holds global variables  

---------------------------------------------------------------------------         
 $Log: lib_app.php,v $
 Revision 1.1.1.1  2004/08/05 23:50:39 ** Author Omitted **



--------------------------------------------------------------------------*/

if (!defined('PHP_APP')) 
    die('<br>'.__FILE__.': This program cannot function without application framework<br>');


class App{

    var $dsn;                           // db connection string
    var $db;                            // db connection object
    var $state;                         // application status
    var $debug =  CONFIG_DEBUG;         // debug status

    function App($dsn){

        $this->dsn  = $dsn;
        $this->db   = DB::connect($dsn);

        if (DB::isError($this->db)) {

            die($this->db->getMessage() . ' module: ' . __FILE__ . ' line: ' .  __LINE__ );
        }
    }   
} // class
?>

拜托,有没有人解决过这个问题,能够提供帮助吗?我引用了很多其他网站,包括Stack上的一个数字。纳达。

附录:就这样我们清楚了,因为那里的仇敌会让我去学习PDO&#34;或者去埋葬这个遗物并加上一些盐#34;虽然热闹且赞赏,但请注意,这不是我的代码。这实际上是一个可能应该埋葬的遗物。但是,它是一个后端的客户管理计划,随附了#34;我们设计并编写了大量前端内容的客户,他们特别要求管理区域不被触及。如果我没有为此付出代价,我就不会重写整件事,但我非常希望为更多的人群解决这个问题:

http://pear.php.net/bugs/bug.php?id=12057

http://forums.devshed.com/php-development-5/non-static-method-db-connect-should-not-be-called-statically-462291.html

http://php.brickhost.com/forums/index.php?topic=10756.0

Error message Strict standards: Non-static method should not be called statically in php

http://forums.phpfreaks.com/topic/265563-help-me-non-static-method-db/

http://forums.codewalkers.com/pear-packages-47/non-static-method-warnings-php-5t-4796.html

对于那些已经收到ZERO答案的更多人群来说,这些答案与这种特殊情况有关,而且对于他们过时的代码比其他任何事情都更加激动和刺激。

让我把它放在你身上。我已经降级回PHP 5.3,因此错误不再出现。一切正常。但是需要对这个问题做出某种回答,这个问题在所有的笑声和指向中都是错过的,并且快速的&#34; duh ...关闭错误报告&#34; (它不起作用),以及声明为非静态变量(derr)的非特定注释。没有$ @#!家伙。如果它那么简单,我甚至不会在Stack上发布这个。

为了我自己的利益?不再。但事实是,将会有很多人在寻找那些在其他地方找不到的人的答案。我希望有人能找到解决方案。如果没有,相信我,我不会失去任何睡眠。

1 个答案:

答案 0 :(得分:1)

对不起,

但珍珠已经过时或者他的继任者是MDB2 ,考虑升级到类似PDO的东西

了解详情... PDO