【问题标题】:mysql query results in a Warning [duplicate]mysql查询导致警告[重复]
【发布时间】:2012-12-27 12:08:56
【问题描述】:

可能重复:
mysql_fetch_array() expects parameter 1 to be resource problem

在使用 php 编程方面,我是个初学者。目前我正在一个带有数据库的项目中工作。当我尝试调用我的查询时出现问题:$r = mysqli_query($db, $q); 我收到此错误:

这是我连接到我的数据库的类:

class conectDB{
var $dbUser;
var $dbPassword;
var $dbHost;
var $dbName;

function __construct() {
    $this->dbUser ='root';
    $this->dbPassword = '';
    $this->dbHost = 'localhost';
    $this->dbName = 'db';
    $dbc = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPassword, $this->dbName) or die('Fatal error!');
 }
}

我在这里调用我的查询:

$db = new conectDB();
$q='SELECT * FROM categories ORDER BY category';
$r = mysqli_query($db, $q);
while(list($id, $category) = mysqli_fetch_array($r, MYSQLI_NUM)){
 echo '<li><a href="category.php?id='.$id.'" title="'.$category.'">'.$category.'</a></li>';
}

【问题讨论】:

  • 你使用的是哪个调试器
  • 它在 php.net 上说:混合 mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] ) 所以第一个参数应该是链接而不是对象

标签: php mysqli


【解决方案1】:

您提供的是conectDB 类的实例,而不是mysqli_connect 返回的链接。

你可以做类似的事情(注意你缺少的回报):

class conectDB {
    protected $dbUser;
    protected $dbPassword;
    protected $dbHost;
    protected $dbName;
    protected $link;

    function __construct() {
        $this->dbUser ='root';
        $this->dbPassword = '';
        $this->dbHost = 'localhost';
        $this->dbName = 'db';

        $this->link = mysqli_connect($this->dbHost, $this->dbUser, $this->dbPassword, $this->dbName) or die('Fatal error!');
     }

    public function getLink() {
      return $this->link;
    }
}

然后使用它

$db = new conectDB();
$q='SELECT * FROM categories ORDER BY category';
$r = mysqli_query($db->getLink(), $q);

在侧节点上,您不应再使用 var 关键字:http://php.net/manual/en/language.oop5.properties.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2016-03-30
    • 2016-08-03
    • 2016-12-25
    • 1970-01-01
    • 2017-11-06
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多