Php 通过PDO查询返回布尔值

Php 通过PDO查询返回布尔值,php,mysql,pdo,Php,Mysql,Pdo,我尝试从以下PHP/PDO调用返回到jQuery/AJAX的布尔值,但没有成功: $db = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass); $sql = "SELECT COUNT(*)" . "FROM bu_users" . "WHERE user_email = :email"; $stmt = $db->prepare($sql); $stmt->exec

我尝试从以下PHP/PDO调用返回到jQuery/AJAX的布尔值,但没有成功:

$db = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);

$sql = "SELECT COUNT(*)" .
    "FROM bu_users" .
    "WHERE user_email = :email";
$stmt = $db->prepare($sql);
$stmt->execute(array(':email' => $_GET[reg_email]));

if(!$stmt){
    $result = $stmt->errorInfo();
} else {
    $result = $stmt->fetchColumn();
}

print_r($result);
我通过console.log输出结果,但无论电子邮件是否与数据库行匹配,我只接收空响应。任何帮助都将不胜感激。谢谢。

SQL语法问题:

$stmt = $db->prepare("SELECT 1 FROM bu_users WHERE user_email = ?");
$stmt->execute(array($_GET['reg_email']));
echo json_encode((bool)$stmt->fetchColumn());
$sql = "SELECT COUNT(*)" .
    "FROM bu_users" .
     ^---
    "WHERE user_email = :email";
     ^---
您在指定的位置缺少空格,您的查询结果如下所示:

SELECT COUNT(*)FROM bu_usersWHERE user_email = :email;
              ^^--         ^^--
不要像那样生成多行字符串。犯这样愚蠢的错误太容易了。至少使用一个:


$sql=即使计数为零,查询也不会失败,因此语句将返回true。您需要获取列并检查值。谢谢。在纠正了Marc指出的错误后,我使用了json_编码((bool)…进行转换。
$sql = <<<EOL
SELECT COUNT(*)
FROM bu_users
WHERE user_email = :email
EOL;