Connecting Tech Pros Worldwide Forums | Help | Site Map

New To PHP - Error In My Class

cyber0ne
Guest
 
Posts: n/a
#1: Aug 11 '06
Using PHP 5.1.2

I'm working on a personal project to get used to PHP, and I seem to be
stuck at the moment on a class I'm writing. Here is the code for the
class, with a comment highlighting where it dies when a function is
called externally from the code that instantiates the class:

----------BEGIN PASTE----------
class DataAccess{

private $databaseConnection;

function __construct()
{
@ $databaseConnection = new mysqli("this", "is", "fake", "data");
if (mysqli_connect_errno())
{
// TODO: generate an error
}
}

function __destruct()
{
$databaseConnection->close();
}

function GetArticlesForCategory($cid)
{
$querySelect = "SELECT stuff WHERE something = " . $cid;

// Testing shows that the following line is where the code dies.
$resultSet = $databaseConnection->query($querySelect);
// End dying code

if ($resultSet)
{
$rowCount = $resultSet->num_rows;
if ($rowCount 0)
{
$i = 0;
while ($i < $rowCount)
{
$rows[$i] = $resultSet->fetch_assoc();
$i++;
}
$resultSet->free();
return $rows;
}
else
{
// TODO: report an empty set
$resultSet->free();
return;
}
}
else
{
// TODO: generate an error
$resultSet->free();
return;
}
}

}
------------END PASTE------------

The error log seems to be claiming that $databaseConnection is
undefined on that line of code. Is there maybe something syntactic
that I'm missing? I've tried replacing all 3 references to
$databaseConnection in the class functions with
$this->$databaseConnection, but that didn't seem to change anything.

Any ideas?


Tim Hunt
Guest
 
Posts: n/a
#2: Aug 11 '06

re: New To PHP - Error In My Class



cyber0ne wrote:
Quote:
Using PHP 5.1.2
>
I'm working on a personal project to get used to PHP, and I seem to be
stuck at the moment on a class I'm writing. Here is the code for the
class, with a comment highlighting where it dies when a function is
called externally from the code that instantiates the class:
>
----------BEGIN PASTE----------
class DataAccess{
>
private $databaseConnection;
>
function __construct()
{
@ $databaseConnection = new mysqli("this", "is", "fake", "data");
if (mysqli_connect_errno())
{
// TODO: generate an error
}
}
>
function __destruct()
{
$databaseConnection->close();
}
>
function GetArticlesForCategory($cid)
{
$querySelect = "SELECT stuff WHERE something = " . $cid;
>
// Testing shows that the following line is where the code dies.
$resultSet = $databaseConnection->query($querySelect);
// End dying code
>
if ($resultSet)
{
$rowCount = $resultSet->num_rows;
if ($rowCount 0)
{
$i = 0;
while ($i < $rowCount)
{
$rows[$i] = $resultSet->fetch_assoc();
$i++;
}
$resultSet->free();
return $rows;
}
else
{
// TODO: report an empty set
$resultSet->free();
return;
}
}
else
{
// TODO: generate an error
$resultSet->free();
return;
}
}
>
}
------------END PASTE------------
>
The error log seems to be claiming that $databaseConnection is
undefined on that line of code. Is there maybe something syntactic
that I'm missing? I've tried replacing all 3 references to
$databaseConnection in the class functions with
$this->$databaseConnection, but that didn't seem to change anything.
>
Any ideas?
You have to use $this->... to access class properties

And...
Quote:
@ $databaseConnection = new mysqli("this", "is", "fake", "data");
if (mysqli_connect_errno())
{
// TODO: generate an error
}
}
How can you tell if an error occurs if the mysqli error message's are
being displayed and php errors are suppressed for 'new mysqli'?

Replace every $databaseConnection with $this->databaseConnection,
replace TODO with echo mysql_connect_error() and remove the @ from
$databaseConnection.

Tim

B.r.K.o.N.j.A
Guest
 
Posts: n/a
#3: Aug 11 '06

re: New To PHP - Error In My Class


cyber0ne wrote:
Quote:
Using PHP 5.1.2
>
I'm working on a personal project to get used to PHP, and I seem to be
stuck at the moment on a class I'm writing. Here is the code for the
class, with a comment highlighting where it dies when a function is
called externally from the code that instantiates the class:
>
----------BEGIN PASTE----------
class DataAccess{
>
private $databaseConnection;
>
function __construct()
{
@ $databaseConnection = new mysqli("this", "is", "fake", "data");
if (mysqli_connect_errno())
{
// TODO: generate an error
}
}
>
function __destruct()
{
$databaseConnection->close();
}
>
function GetArticlesForCategory($cid)
{
$querySelect = "SELECT stuff WHERE something = " . $cid;
>
// Testing shows that the following line is where the code dies.
$resultSet = $databaseConnection->query($querySelect);
// End dying code
>
if ($resultSet)
{
$rowCount = $resultSet->num_rows;
if ($rowCount 0)
{
$i = 0;
while ($i < $rowCount)
{
$rows[$i] = $resultSet->fetch_assoc();
$i++;
}
$resultSet->free();
return $rows;
}
else
{
// TODO: report an empty set
$resultSet->free();
return;
}
}
else
{
// TODO: generate an error
$resultSet->free();
return;
}
}
>
}
------------END PASTE------------
>
The error log seems to be claiming that $databaseConnection is
undefined on that line of code. Is there maybe something syntactic
that I'm missing? I've tried replacing all 3 references to
$databaseConnection in the class functions with
$this->$databaseConnection, but that didn't seem to change anything.
>
Any ideas?
>
the way you did it in constructor the variable databaseConnection has
scope only in that particular method, you should use

@ $this->databaseConnection = new mysqli("this", "is", "fake", "data");

and allways reference that property via $this->databaseConnecion...

you were using local variables where you really needed class properties


--

B.r.K.o.N.j.A = Bionic Robotic Knight Optimized for Nocturnal Judo and
Assasination
cyber0ne
Guest
 
Posts: n/a
#4: Aug 11 '06

re: New To PHP - Error In My Class


Replace every $databaseConnection with $this->databaseConnection

I guess it was a syntax thing :) I was trying the following:

$databaseConnection
or
$this->$databaseConnection

But I just got rid of that second $ where applicable and it seems to be
working now. Thanks!

Closed Thread