1

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

mysql_fetch_array() expects parameter 1 to be resource, string given.
Thanks for any suggestions.
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'];
    }
  }
}
Dharman
  • 30,962
  • 25
  • 85
  • 135
Seven
  • 392
  • 1
  • 4
  • 14

3 Answers3

16

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

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'];
        }
    }
}
jondavidjohn
  • 61,812
  • 21
  • 118
  • 158
4

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

Matt K
  • 13,370
  • 2
  • 32
  • 51
0

You need to pass $result into the mysql_fetch_array function call as the first parameter, not $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'];
    }
  }
}
feihtthief
  • 6,403
  • 6
  • 30
  • 29