我正在尝试查看是否已使用PDO注册了电子邮件,但到目前为止我还没有找到一个好方法。这就是我到目前为止所拥有的。如果有帮助,连接变量是“$ con”。此外,我是否需要在同一文档中使用连接变量,或者它是否包含在包含的文档中?
<link rel="stylesheet" type="text/css" href="css\errors.css">
<?php
require('header.php');
if(!$_POST['submit'])
{
?>
<html>
<a href="register.html">Regsiter here!</a>
<?php
}
else
{
require 'connect.php';
$firstname = ($_POST['firstname']);
$lastname = ($_POST['lastname']);
$email = ($_POST['email']);
$password = ($_POST['password']);
$passwordconf = ($_POST['passwordconf']);
$errorfields = "<p class='errormsg'>Please fill out all the fields!</p>";
if(empty($firstname) || empty($lastname) || empty($email) || empty($password) || empty($passwordconf))
{
echo "$errorfields";
}
$erroremail = "<p class='errormsg'>Email is not in name@domain format!</p>";
$regex = "/^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+.[a-z]{2,}$/i";
if(!preg_match($regex, $email))
{
echo "$erroremail";
}
$errorpassword = "<p class='errormsg'>You passwords do not match!</p>";
if ($password != $passwordconf)
{
echo "$errorpassword";
}
//this is where email is checked
}
?>
答案 0 :(得分:4)
尝试此操作,使用您的连接凭据填写DB_NAME,DB_USER_NAME和DB_USER_PASS,或者如果所有内容都正确设置为PDO对象,请使用$ con变量:
$con = new PDO( 'mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS' );
$query = $con->prepare( "SELECT `email` FROM `tbl_name` WHERE `email` = ?" );
$query->bindValue( 1, $email );
$query->execute();
if( $query->rowCount() > 0 ) { # If rows are found for query
echo "Email found!";
}
else {
echo "Email not found!";
}
答案 1 :(得分:1)
接受的答案中有一些问题(这是很容易理解的,因为它已经写了很久了。)
第一个有点无关紧要,但仍然如此。连接代码不像单行代码那么简单。请参阅我在how to properly connect with PDO上的文章,以避免将来出现许多可能的问题。
另一个问题是使用rowCount()
方法,正如手册could be unavailable所述。此外,bindParam()
的使用是多余的,可以避免使用,以使代码更简洁明了。结果,我们可以提出以下解决方案
require 'connect.php'; // contains the code mentioned above.
$stmt = $con->prepare( "SELECT 1 FROM `tbl_name` WHERE `email` = ?");
$stmt->execute([$email]);
$found = $stmt->fetchColumn();
if( $found ) {
echo "Email found!";
} else {
echo "Email not found!";
}
如果您不仅需要检查是否存在,而且还需要获取实际记录(例如,为了验证密码),只需将查询中的1
更改为实际字段,然后将{{1 }}到fetchColumn()
:
fetch()