通过PDO查询返回布尔值

时间:2014-02-28 21:16:51

标签: 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->execute(array(':email' => $_GET[reg_email]));

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

print_r($result);

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

2 个答案:

答案 0 :(得分:4)

SQL语法问题:

$sql = "SELECT COUNT(*)" .
    "FROM bu_users" .
     ^---
    "WHERE user_email = :email";
     ^---

您指定的位置缺少空格,您的查询结果如下:

SELECT COUNT(*)FROM bu_usersWHERE user_email = :email;
              ^^--         ^^--

不要生成这样的多行字符串。制造像这样的愚蠢错误太容易了。至少使用HEREDOC

$sql = <<<EOL
SELECT COUNT(*)
FROM bu_users
WHERE user_email = :email
EOL;

无需连接,自动多行使用,您也可以很好地格式化SQL。

答案 1 :(得分:3)

$stmt = $db->prepare("SELECT 1 FROM bu_users WHERE user_email = ?");
$stmt->execute(array($_GET['reg_email']));
echo json_encode((bool)$stmt->fetchColumn());