|
Posted by Jerry Stuckle on 07/08/07 19:37
vncntj@hotmail.com wrote:
> I keep getting a:
>
> mysql_fetch_array(): supplied argument is not a valid MySQL...
>
> this is my class connection
>
> <?php
>
> class cDatabase {
>
> //class variables defined in constructor
> var $host;
> var $user;
> var $password;
> var $databaseName;
>
> //constructor - needed for connection string
> function cDatabase($hostName, $userName, $passwordName,
> $databaseName){
> $this->host = $hostName;
> $this->user = $userName;
> $this->password = $passwordName;
> $this->database = $databaseName;
> }
>
>
> //execute a query
> function ExecuteNonQuery($sql){
> $conn = mysql_connect($this->host, $this->user, $this->password);
> mysql_select_db ($this->database);
>
> $rs = @mysql_query($sql);
> settype($rs, "null");
> mysql_close($conn);
> }
>
> }
>
> ?>
>
>
> and this is the page
>
> <?php
>
> include "dbclass.php";
>
> $cDB = new cDatabase(host, user, password, database);
>
> // test select query
> $rs = $cDB->ExecuteNonQuery("Select event from na_events");
>
> while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
> echo $row['event'];
> }
>
> // kill our objects
> settype($rs, "null");
> settype($cDB, "null");
>
> ?>
>
> Thanks,
>
Let's see, where shall we start?
You're not checking to see if the connection is successful, you're not
checking if the database was actually selected, and you're not checking
to see if the query was successful.
Also, you're setting the type of the recordset returned by the query to
"null", so you've just destroyed the recordset itself. Anf you're not
returning $rs from ExecuteNonQuery().
And I'm not sure if it makes any difference or not - because I don't
close connections prematurely, but you're closing the connection before
you retrieve the results. It may not be a problem here - but if you
make another query in the same page, you'll have to open another
connection - a lot of overhead. You should only close a connection when
you're done with all of your MySQL work.
Try correcting these errors and adding error checking to print out error
messages when they occur.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|