Welcome Guest, Not a member yet? Register   Sign In
Fatal error: Call to a member function num_rows() on a non-object
#1

[eluser]QuibaX[/eluser]
Hi,

I've been having an error and i just can't figure out how to fix it.
This function produces that error :

Code:
function TransferActivated()
        {
            $webdb = $this->load->database('webdb', TRUE);
            $manager = $this->load->database('manager', TRUE);
            
            $activatedUsers = $webdb->query("SELECT * FROM users WHERE activated='1'");
            if($activatedUsers->num_rows() > 0) -> Error ...
            {
                foreach($activatedUsers->result() as $row)
                {
                    $password = md5($row->username . $row->password . 341765);
                    $manager->query("INSERT INTO accounts(username, password, email) VALUES('$row->username', '$password', '$row->email'");
                }
            }
            $webdb->close();
            $manager->close();
        }

However, the following function does work and is almost done the same way.

Code:
function GetNotActivatedUsers()
        {
            $webdb = $this->load->database('webdb', TRUE);
            $query = $webdb->query("SELECT * FROM users WHERE activated IS NULL");
            return $query->num_rows();
        }

Can anyone help ?
Thanks,

QuibaX
#2

[eluser]Twisted1919[/eluser]
I believe that here is the problem :
Code:
$webdb = $this->load->database('webdb', TRUE);
$manager = $this->load->database('manager', TRUE);
you should do something like :
Code:
function TransferActivated()
        {
            $webdb = $this->load->database('webdb', TRUE);

            $activatedUsers = $webdb->query("SELECT * FROM users WHERE activated='1'");
            if($activatedUsers->num_rows() > 0) -> Error ...
            {
                $manager = $this->load->database('manager', TRUE);
                foreach($activatedUsers->result() as $row)
                {
                    $password = md5($row->username . $row->password . 341765);
                    $manager->query("INSERT INTO accounts(username, password, email) VALUES('$row->username', '$password', '$row->email'");
                }
            }
            $webdb->close();
            $manager->close();
        }
#3

[eluser]QuibaX[/eluser]
[quote author="Twisted1919" date="1286642573"]I believe that here is the problem :
Code:
$webdb = $this->load->database('webdb', TRUE);
$manager = $this->load->database('manager', TRUE);
you should do something like :
Code:
function TransferActivated()
        {
            $webdb = $this->load->database('webdb', TRUE);

            $activatedUsers = $webdb->query("SELECT * FROM users WHERE activated='1'");
            if($activatedUsers->num_rows() > 0) -> Error ...
            {
                $manager = $this->load->database('manager', TRUE);
                foreach($activatedUsers->result() as $row)
                {
                    $password = md5($row->username . $row->password . 341765);
                    $manager->query("INSERT INTO accounts(username, password, email) VALUES('$row->username', '$password', '$row->email'");
                }
            }
            $webdb->close();
            $manager->close();
        }
[/quote]

Yeah that was my first taught 2, but its strange as the doc says you can actually load 2 databases at the same time.
#4

[eluser]OliverHR[/eluser]
Error is in the query:

It isn't returning anything.

Try :
Code:
$activatedUsers = $webdb->query('SELECT * FROM users WHERE activated=1');

Notice number 1 not as string.
#5

[eluser]QuibaX[/eluser]
[quote author="OliverHR" date="1286645615"]Error is in the query:

It isn't returning anything.

Try :
Code:
$activatedUsers = $webdb->query('SELECT * FROM users WHERE activated=1');

Notice number 1 not as string.[/quote]

That's not a error in the query, and it does return what it should. '1' works perfectly. However, i did try it and it still gave the same error.

And @Twisted1919 : By doing that, nothing happens, so i guess the result is empty for some reason... However if i echo the results they do show up fine.
#6

[eluser]OliverHR[/eluser]
When I say the error is in the query I mean , that you are not getting back an object after query your database.

Try debugging you database instances:

Code:
$webdb = $this->load->database('webdb', TRUE);
$manager = $this->load->database('manager', TRUE);

echo '<pre>';
print_r($webdb);
print_r($manager);
echo '</pre>';
#7

[eluser]QuibaX[/eluser]
Thanks for the responds poeple, it is solved.
Twisted hes answer was right, however it wasn't doing anything...
Code:
$manager->query("INSERT INTO accounts(username, password, email) VALUES('$row->username', '$password', '$row->email'");
Notice i forgot a ) at the end...
Sorry, small mistake and never saw it.

Anyway, codeigniter never said anything about a query error, can i put that on somewhere ?




Theme © iAndrew 2016 - Forum software by © MyBB