php mysql_fetch_array() 期望参数 1 是资源,给定的字符串

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4901728/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 16:13:30  来源:igfitidea点击:

mysql_fetch_array() expects parameter 1 to be resource, string given

phpmysqloop

提问by Seven

I have two classes DBConnand DBQueries. DBQueriesinherits after DBConn. When I'm going to display all users in users database, I see message:

我有两个班级DBConnDBQueries. DBQueries之后继承DBConn。当我要显示用户数据库中的所有用户时,我看到消息:

mysql_fetch_array() expects parameter 1 to be resource, string given.
mysql_fetch_array() 期望参数 1 是资源,给定的字符串。
感谢您的任何建议。

class DBConn /*extends Config*/ {
  public function dbConnection(){
    $db_host = 'localhost';
    $db_login = 'root';
    $db_password = '';
    $db_name = "database";
    $conn = mysql_connect($db_host, $db_login, $db_password);
    $db = mysql_select_db($db_name);
  }  
}
class DBQueries extends DBConn {
  function displayUsers(){
    $this->dbConnection();
    $query = "SELECT * FROM users";
    $result = mysql_query($query);
    while ($row = mysql_fetch_array($query)) {
      echo $row['password'];
    }
  }
}

回答by jondavidjohn

You are passing in $querywhich is your sql string, when you need to pass in $resultwhich is your db result object.

您正在传入$querywhich 是您的sql string,当您需要传入$resultwhich 是您的数据库结果对象时。

class DBQueries extends DBConn {
    function displayUsers(){
        $this->dbConnection();
        $query = "SELECT * FROM users";
        $result = mysql_query($query);
        while ($row = mysql_fetch_array($result)) {
            echo $row['password'];
        }
    }
}

回答by mkb

You need to pass in the result handle $resultreturned by mysql_query().

您需要传入$result由 返回的结果句柄mysql_query()

回答by feihtthief

You need to pass $result into the mysql_fetch_array function call as the first parameter, not $query.

您需要将 $result 作为第一个参数传递到 mysql_fetch_array 函数调用中,而不是 $query。

class DBQueries extends DBConn {
  function displayUsers(){
    $this->dbConnection();
    $query = "SELECT * FROM users";
    $result = mysql_query($query);
    while ($row = mysql_fetch_array($result)) {
      echo $row['password'];
    }
  }
}