我试图将以下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输出我的结果,但是只收到空响应,无论电子邮件是否与数据库行匹配。任何帮助,将不胜感激。感谢。
答案 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());