PDA

View Full Version : Database Class won't work -- Call to a member function on a non-object in ...


gengar003
10-25-2003, 12:38 PM
First off, this isn't vBulletin related, but this is the most active/helpful/nice/php 'n' mySQL knowledgable forum around, so I thought I'd post my question here.


I'm trying to write my own news management script. But for the most part that's irrelevant to my problem.

Okay, here's my problem.

I'm using this as a Database Class.


//////////////////////////////BEGIN DB CLASS
class DB_SITE {
//vars

///vars

//connect
function DB_SITE(){
echo "fat";
}

function connect($host,$un,$pw){
$link = mysql_connect ("$host", "$un", "$pw") or die ('I cannot connect to the database because: ' . mysql_error());

if ($link=="false"){
exit("Unable to connect to $host");
}
}
///connect

//select db
function select_db($usedb){
$select=mysql_select_db("$usedb");
if (!$select==mysql_select_db("$usedb")){
exit("Unable to select the database");
}
}
//noselectdb

/////query
function query($query,$link){

$result = mysql_query("$query", $link);
if ($result=="false"){
exit("Illegal query");
}






return $result;
}
///////no query
}
////////////////////////////END DB CLASS


And the script seems to like it fine.

(Also, above it, at the very top are these:)


$host="localhost";
$un="gengar00_Gengar0";
$pw="*******"; ///it's filled in in the script, just not in this post
$usedb="gengar00_news";


Which are used in the class.

Now, if I scrap the idea of a class, and remove the code form the functions, it'll connect/select/query fine. But I want it to be in a class. However, after I set up the class, when I use this code:


$DB_SITE->connect($host,$un,$pw);


using the variables set at the very top of the script, it returns this error:

Fatal error: Call to a member function on a non-object in /home/gengar00/public_html/news/news.php on line 56

Line 46-66:

//46
//47
//48
//59
//50
return $result;//51
}//52
///////no query//53
}//54
////////////////////////////END DB CLASS//55
$DB_SITE->connect($host,$un,$pw);//56
//57
//58
function isloggedin($username){//59
echo "<input type=\"hidden\" name=\"loggedin\" value=\"$username\">";//60
}//61
//62
function error_nologin(){//63
echo "Sorry, but that's not a valid username/password combination.";//64
}//65
//66


So, why's it give me that error?

filburt1
10-25-2003, 12:59 PM
Did you ever contruct a DB_SITE object?

gengar003
10-25-2003, 05:22 PM
Huh? Isn't

class DB_SITE {
blah, blah blah
}


enough?

gengar003
10-25-2003, 06:18 PM
EDIT: Fixed this problem. Stay tuned for more. *sigh*


NOTE: Okay, I created a new thingamajig, now I need to: make a "fetch_array" function. I tried, using this code:


function fetch_array($arrayx){

$array=mysql_fetch_array($arrayx,MYSQL_BOTH);
return $array;

}


Does that look right?

Then, I use this:


$DB_SITE->select_db($usedb);
echo $usedb;

$data = $DB_SITE->("SELECT email FROM authors WHERE name='Gengar003'");
while ($row = mysql_fetch_array($data, MYSQL_ASSOC)) {
printf ("email: %s", $row["email"]);
}

NOTE: DB is connected to earlier in the script.

Then I run it, and get this error:


Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'{'' or `'$'' in /home/gengar00/public_html/news/dbconnect.php on line 70


And before it started doing that, It gave me something like...
"Supplied argument is not a valid mysql result resource."


Lines 60-76:

return $array;

}

//nofetch
}
/////////////////////////////////////////////////////////////////END DB CLASS
$DB_SITE->select_db($usedb);
echo $usedb;

$data = $DB_SITE->("SELECT email FROM authors WHERE name='Gengar003'");
while ($row = mysql_fetch_array($data, MYSQL_ASSOC)) {
printf ("email: %s", $row["email"]);
}


?>