PHP 警告:xyy::query($query) 的声明应该与 mysqli::query($query, $resu

  • 本文关键字:query mysqli resu 警告 xyy PHP 声明 php mysqli
  • 更新时间 :
  • 英文 :


我正在尝试为 mysqli 编写一个包装类,基本上只是为了更好地处理错误,但是当我尝试运行网站上的任何页面时,我遇到了错误,而不仅仅是那些调用 mysqli 的页面。

这是我得到的错误:

PHP 警告:定价声明MySql::query($query(应该与第37行\classes\PricingMySql.php中的mysqli::query($query,$resultmode = NULL(兼容

这是 PricingMySql 的类定义:

class PricingMySql extends mysqli{
public function __construct() {
    parent::__construct(Pricing_DBServerName, Pricing_UserName,
            Pricing_Password, Pricing_DBName);
    if($this->connect_errno){
        throw new Exception("Failed to connect to MySQL: (". $this->connect_errno. ") ". $this->connect_error, $this->connect_errno);
    }
}
public function query(string $query, int $resultmode = MYSQLI_STORE_RESULT) {
    if(!$result  = parent::query($query, $resultmode)) {
        echo "Query Execution failed: (", $this->connect_errno, ") ", $query;
    }
    return $result;
}

根据 php.net,mysqli::query方法的定义完全相同

 mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] ) : mixed

那么为什么我会收到警告呢?我尝试更改我的代码,以便 $resultmode = null,如警告中所述:

public function query(string $query, int $resultmode = NULL) {

但这仍然会导致相同的警告。我哪里出错了?

编辑以添加:我摆脱了强制类型:

public function query($query, $resultmode = MYSQLI_STORE_RESULT) {

但同样,同样的警告。

如果你是声明是:

PricingMySql::query($query)

而实际的方法是:

mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

然后,您将缺少第二个参数。

如果您还没有尝试PricingMySql::query($query, null),请尝试一下。

此链接提供了更多信息:方法声明应与 PHP 中的父方法兼容

最新更新