我正在使用一个表单(仅包含电子邮件)将Ajax数据发送到我的php文件,我需要检查用户输入的电子邮件是否存在于我的数据库表中。
该表包含以下列:id、名称、电子邮件、时间戳。
在变量$email中,我存储了用户在表单中添加的电子邮件。
我正在使用PDO使用此代码连接到我的数据库
try {
$db = new PDO('mysql:unix_socket=/tmp/mysql51.sock;host='. DB_HOST .';dbname='. DB_NAME . ';charset=utf8', DB_USER, DB_PASS);
} catch (PDOException $e) {
echo 'Pripojenie zlyhalo: ' . $e->getMessage();
}
$query_user = $db->prepare("SELECT COUNT FROM koniecinvite as pocet WHERE email='$email'");
$query_user->execute();
$pocet = $query_user->fetchObject();
if($pocet>0){
http_response_code(200);
echo "Email exists";
}else {
http_response_code(200);
echo "Email does not exists";
}
它不起作用。我知道我需要通过电子邮件获取行数,但我在这里需要一些帮助。
有人可以帮助我吗?
编辑:从错误报告中,我得到"注意:类 stdClass 的对象无法转换为 int"
首先:
SELECT COUNT FROM koniecinvite as pocet WHERE email='$email'"
应该是:
SELECT COUNT(*) FROM koniecinvite as pocet WHERE email='$email'"
此外,由于SQL注入的危险,必须转义$email:https://en.wikipedia.org/wiki/SQL_injection
所以执行查询的代码片段应该是(请注意,在字符串上我不使用该变量,而是使用 :something ,它将由带有 bindParam 的变量放置):
$query_user = $db->prepare("SELECT COUNT FROM koniecinvite as pocet WHERE email=:email");
$query_user->bindParam(":email","$email")
$query_user->execute();