2014-09-18 111 views
-3

我有以下代碼,它完美地工作。如果他輸入的電子郵件地址已經存在於數據庫中,我希望用戶收到錯誤消息! 謝謝!檢查重複項,PHP和MySQL

$con=mysqli_connect("xxxx.com","xxxx_xxx","xxxx","yyyyy_"); 
// Check connection 
if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


$firstname = mysqli_real_escape_string($con, $_POST['firstname']); 
$lastname = mysqli_real_escape_string($con, $_POST['lastname']); 
$password = mysqli_real_escape_string($con, $_POST['password']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$address = mysqli_real_escape_string($con, $_POST['address']); 
$postcode = mysqli_real_escape_string($con, $_POST['postcode']); 
$country = mysqli_real_escape_string($con, $_POST['country']); 
$phonenumber = mysqli_real_escape_string($con, $_POST['phonenumber']); 
$rating = mysqli_real_escape_string($con, $_POST['rating']); 

$sql="INSERT INTO customers (firstname, lastname, password, email, address, postcode, country, phonenumber, rating) 
VALUES ('$firstname', '$lastname', '$password', '$email', '$address', '$postcode', '$country', '$phonenumber', '$rating')"; 

if (!mysqli_query($con,$sql)) { 
die('Error: ' . mysqli_error($con)); 
} 
echo "1 record added"; 

mysqli_close($con); 
+1

在問之前你沒有Google嗎?使用'mysqli_num_rows()' – 2014-09-18 18:44:36

+1

* snicker *你很荒唐@ Fred-ii- Google太難了。 – 2014-09-18 18:46:56

+1

@JayBlanchard難道不是巧克力棒嗎?現在你已經做到了,我現在有了零食。 *士力架* – 2014-09-18 18:47:41

回答

0

使用選擇語句檢索與輸入電子郵件行,檢查是否行計數> 0

+1

如果OP的電子郵件列設置爲唯一,則會拋出錯誤。不需要單獨的查詢。 – 2014-09-18 18:50:40

4

這裏,使用prepared statements方法和num_rows()

$con = new mysqli("localhost", "user", "password", "database"); 
if ($con->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $con->connect_errno . ") " . $con->connect_error; 
} 

$check_email = $con->prepare("SELECT * FROM customers WHERE email=?"); 
    $check_email->bind_param("s", $email); 
    $check_email->execute(); 
    $check_email->store_result(); 
    $row_check = $check_email->num_rows; 

if($row_check > 0) { 

// your error message or make it die. 

$check_email->close(); 
$con->close(); 

} 

的另一種方式,以確保不重複的記錄存在於數據庫,就是讓你的列(S)爲UNIQUE


或:

$check_email = mysqli_query($con, "SELECT * FROM customers where email= '".$email."' "); 

$numrows=mysqli_num_rows($check_email); 

if($numrows > 0){ 
    die("Email exists already."); 
} 

else { 

    echo "Does NOT exist."; // continue and insert into DB 

} 

使用準備好的報表方法更好,更安全。