【问题标题】:PHP Strict Standards: Non-static method Fatal::dbError()PHP 严格标准:非静态方法 Fatal::dbError()
【发布时间】:2013-01-08 18:55:39
【问题描述】:

我正在对 PHP 中的一个错误进行故障排除,但我不知道如何解决它。我没有任何PHP知识。

代码如下:

function _act($sql) {
   if (!$this->_link) {
      Fatal::internalError('Tried to make database query before connection.');
   }

   $r = mysql_query($sql, $this->_link);

   if ($r === false) {
      Fatal::dbError($sql, "Database query failed", mysql_error());
   }
   return $r;
 }

在错误日志中我得到以下信息:

[24-Jan-2013 13:25:38 America/Denver] PHP 严格标准:非静态方法 Fatal::dbError() 不应静态调用,假设 $this 来自 /home1/flcclear/ 中的不兼容上下文第 91 行的 public_html/Library/classes/Query.php

我尝试使用$r->mysql_error(); 使其成为对象调用,但这导致了不同的错误。我不是想重写这段代码,只是想纠正一所小学/中学的错误,这等于没有钱,志愿者时间。

提前致谢。

【问题讨论】:

  • 但错误消息是指“Fatal::dbError”而不是“mysql_error”。
  • 不要再使用mysql-extension。阅读php.net/en/mysql-connect
  • @KingCrunch 问题不是关于“使用”的问题是关于失败的问题,在您的回复中添加 cmets 可能有用,但请先让位,以便他可以解决问题。谢谢。

标签: php exception methods standards strict


【解决方案1】:

使 Fatal::internalError,Fata::dbError(以及您正在使用的其他方法,例如“Fatal::methodName”)静态

示例:

class Fatal
{
    public static dbError($sql,$message){
    //method body
    }
}

【讨论】:

    【解决方案2】:

    但错误消息指的是Fatal::dbError,而不是mysql_error

    Fatal::dbError 是专为你设计的课程吗?试试这个:

    Class Fatal{
      ...
      static public dbError(...){...}
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 2015-05-08
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多