Jump to content

Need help using the mysqli fetch array


eldan88

Recommended Posts

Hey guys, I am trying to do a fetch_array in mysqli(object oriented way). I have assigned instantiated the class and assigned it the private attribute called $_connection.

 

However when I try to call $_connection->fetch_array($result) outside my DB class it won't let me call it since its a private method. 

 

I know I could change the attribute to public. But will that be safe?

 

Below is my database class

<?php
require('config.php');

class MySQLDatabase {
    
    private $_connection;
 
    public function __construct() {
        $this->_connection =  new mysqli('localhost', 'root', 'root', 'sandbox', '8080');
        if(!$this->_connection) {
            die('Connection Error'.$_connection->connect_error );
        } else {
            $db_select = $this->_connection->select_db(DB_NAME);
        } if(!$db_select) {
            die("Database Selection Failed" . $this->_connection->error);
        }
    }
    
    public function query($sql) {
        $result = $this->_connection->query($sql);
        $this->confirm_query($result);
        return $result;
    }
    
    private function confirm_query($result){
    if(!$result) {
            die("Query Failed" . $this->_connection->error);
    }
      }
      
      
      public function __clone(){} 

            public function mysql_prep( $value ) {
		$magic_quotes_active = get_magic_quotes_gpc();
		$new_enough_php = function_exists( "mysql_real_escape_string" ); // i.e. PHP >= v4.3.0
		if( $new_enough_php ) { // PHP v4.3.0 or higher
			// undo any magic quote effects so mysql_real_escape_string can do the work
			if( $magic_quotes_active ) { $value = stripslashes( $value ); }
			$value = mysql_real_escape_string( $value );
		} else { // before PHP v4.3.0
			// if magic quotes aren't already on then add slashes manually
			if( !$magic_quotes_active ) { $value = addslashes( $value ); }
			// if magic quotes are active, then the slashes already exist
		}
		return $value;
	}
    
  
  
    
    public function close_connection(){
         if(isset($this->_connection)) {
        $this->_connection->close();
        unset($this->_connection);
    }
     
    }
 
}//end of class


$database = new MySQLDatabase();


?>

Below is an example of how I am using the fetch_array

$query = "SELECT * FROM users WHERE id = 2";
$result = $database->query($query);
$found_user = $database->_connection->fetch_array($result);
echo $found_user['username'];

Link to comment
https://forums.phpfreaks.com/topic/282768-need-help-using-the-mysqli-fetch-array/
Share on other sites

try

$found_user = $result->fetch_array()

fetch_xxxx() are mysqli_result object methods

Hey I have tried doing that but PHP gave me the following error message..

 

Warning: mysqli_result::fetch_array() expects parameter 1 to be long,

I'm not sure what you mean by this. I did dump a var_dump on $result and it returns me an object??

 

 

object(mysqli_result)[3]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null

jazzman. Passing fetch_assoc doesn't make any sense. Why does the var_dump of $result bring back this object?

 

object(mysqli_result)[3]
public 'current_field' => null
public 'field_count' => null
public 'lengths' => null
public 'num_rows' => null
public 'type' => null

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.