This question already has an answer here:
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
$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).The
$pdo
object isn't in scope within your function.Yes, I also learned this the hard way, you need to open DB connection inside the function. I assumed the connection to the DB would be opened inside the function if I opened before calling the function, but no. So:
@Anvd . I had the same problem but I did solve it by connecting the database in the same page not just to include the coonnecting page . It worked for me
In regards the equivalent of mysql_num_rows in PDO is basically FETCH_NUM it return a index number of the selected row.
try this code