Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pdo - Call to a member function prepare() on a non-object [duplicate]

Tags:

php

pdo

This code get an error:

Fatal error: Call to a member function prepare() on a non-object in C:\Users\fel\VertrigoServ\www\login\validation.php on line 42

CODE:

   function repetirDados($email) {
        if(!empty($_POST['email'])) {

            $query = "SELECT email FROM users WHERE email = ?";

            $stmt = $pdo->prepare($query); // error line: line 42

            $email = mysql_real_escape_string($_POST['email']);

            $stmt->bindValue(1, $email);

            $ok = $stmt->execute();

            $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

            if ($results == 0) {
                return true;
            } else {
                echo '<h1>something</h1>';
                return false;
            }
        }
    }

What is the possible cause? Another question, What is the equivalent to mysql_num_rows? sorry, I am newbie with pdo

like image 958
anvd Avatar asked Mar 17 '11 22:03

anvd


3 Answers

$pdo is undefined. You're not declaring it inside the function, and it isn't being passed in as an argument.

You need to either pass it in (good), or define it in the global namespace and make it available to your function by placing global $pdo at the top (bad).

like image 67
meagar Avatar answered Sep 30 '22 02:09

meagar


You can make a function of database connection in the same php page & call that function whenever you want. As,

public function connection()
{
    $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
} 
public function1()
{
   this->connection();
   // now you have the connection.. now, time for to do some query..
}

public function2()
{
  this->connection();
// now do query stuffs..
}

Or simply you can simply write the database connection line in that page every time when you need it. As,

public function a()
{ // connecting DB for this function a only...
  $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
  // bla bla bla...
}
public function b()
{  // connecting DB for this function b only...
   $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
   // abra ke dabra... boom
}
like image 22
M Alam Telot Avatar answered Sep 30 '22 03:09

M Alam Telot


The $pdo object isn't in scope within your function.

like image 25
Mark Baker Avatar answered Sep 30 '22 01:09

Mark Baker