I am trying to pass an mysqli database connection to a php class. The code I have so far (cut down for simplicity) is as follows:
db.php
$db_host = 'localhost';
$db_name = 'dbname';
$db_user = 'username';
$db_password = 'password';
$db = array('db_host'=>$db_host, 
    'db_name'=>$db_name, 
    'db_user'=>$db_user,
    'db_password'=>$db_password);
$dbCon = new mysqli( $db['db_host'], 
    $db['db_user'], 
    $db['db_password'], 
    $db['db_name']);
if (mysqli_connect_errno())
{
    die(mysqli_connect_error()); //There was an error. Print it out and die
}
index.php
<?php
    require_once($_SERVER["DOCUMENT_ROOT"] . "/db.php");
    $sql = "SELECT id FROM usr_clients";
    $stmt = $dbCon->prepare( $sql );
    if ($stmt)
    {
        $stmt->execute();
        $stmt->bind_result($id);
        while($stmt->fetch())
        {
            $cl = new Client($id, $dbCon);
            $cl->doIt();
        }
        $stmt->close();
    }
?>
client.php
<?php
    Class Client
    {
        private $con;
        public static $clientCount = 0;
        public function __construct( $id, $con )
        {
            $this->con = $con;
            $sql = "SELECT id FROM usr_clients WHERE id = $id";
            $stmt = $this->con->prepare( $sql );
            if ($stmt)
            {
                echo "it worked!";
            }
            else
            {
                echo "it failed";
            }
        }
}
?>
Now the index.php page successfully recognises the database connection declared in db.php, and returns a list of all clients. It then loops through each client, and creates a "client" object, passing it the database connection.
It is here that the problem seems to start. In the client class, the database connection is not recognised. I get multiple errors on the page saying "it failed". In the logs, there is a line about calling prepare() on a non object.
Can anyone explain why the connection works in index.php, but not in the client class?
Thanks
 
     
    