Php 为什么我的SQL语句不返回结果?

Php 为什么我的SQL语句不返回结果?,php,mysql,sql,prepared-statement,mariadb,Php,Mysql,Sql,Prepared Statement,Mariadb,所需的声明是: SELECT `id` FROM `user` WHERE `email`='aaa@aaa.com' …返回单个单元格作为结果 我的PDO准备的声明没有返回任何内容。我错过了什么 $email = "aaa@aaa.com"; $statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=':email;'"); $statement->execute(['email' => $email

所需的声明是:

SELECT `id` FROM `user` WHERE `email`='aaa@aaa.com'
…返回单个单元格作为结果

我的PDO准备的声明没有返回任何内容。我错过了什么

$email = "aaa@aaa.com";

$statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=':email;'");
$statement->execute(['email' => $email]);               
$user = $statement->fetch();
echo $user;
像这样使用它:

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

$statement->execute(['email' => $email]);
另外,确保

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

返回有效的查询结果。

不应在:电子邮件中使用引号

$statement = $db->prepare("SELECT `id` FROM `user` WHERE `email`=:email");
正如@siyual所说的,试试这个:

$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 :/';
}

不要在准备好的语句中添加引号<代码>其中`email`=:email同时删除该选项;发件人:电子邮件;它应该是:没有电子邮件;在你的query@Bolli你说得对。execute语句中不也应该是
execute([':email'=>$email])
(使用
)吗?(尽管这是他现在遇到的问题)。@MagnusEriksson是的,你是对的,我不明白第二部分与问题有什么关系。$test=$db->prepare('select 1')$test1=$test->fetch();echo$test1;这不会回来的anything@Heraclitus-您需要执行该语句,以及我的坏消息我忘记了,谢谢@MagnusErikssonAh谢谢,这返回了“无结果”,因此我的连接可能有问题,或者是因为我在mysqlworkbench中执行时确实收到了结果。我刚刚意识到我的数据库选择有问题,我现在有结果了!完美的我正要问你:)