-2

The desired statement is:

SELECT `id` FROM `user` WHERE `email`='aaa@aaa.com'

...which returns a single cell as results.

My PDO prepared statement doesn't return anything. What am I missing?

$email = "aaa@aaa.com";

$statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=':email;'");
$statement->execute(['email' => $email]);               
$user = $statement->fetch();
echo $user;
Heraclitus
  • 80
  • 11

3 Answers3

1

Quote should not be used in :email

$statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=:email");

as said by @siyual

Vishwa Ratna
  • 5,567
  • 5
  • 33
  • 55
1

Try this:

$email = "aaa@aaa.com";

$stmt = $db->prepare("SELECT `id` FROM `user` WHERE `email`=:email");
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($row)) {
    print_r($row);
}else{
    echo 'no result :/';
}
Bolli
  • 4,974
  • 6
  • 31
  • 47
-1

use it like this:

$statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=:email;"); 

$statement->execute(['email' => $email]);

also, make sure that

$db->prepare('select 1');

returns a valid query result.