Sau đây là các phương pháp đã thử, đã thử nghiệm và đã được chứng minh để kiểm tra xem hàng có tồn tại hay không.
(Một số trong số đó tôi sử dụng bản thân hoặc đã sử dụng trong quá khứ).
Chỉnh sửa: Tôi đã mắc lỗi cú pháp trước đây trong đó tôi đã sử dụng mysqli_query()
hai lần. Vui lòng tham khảo (các) bản sửa đổi.
I E:
if (!mysqli_query($con,$query))
mà lẽ ra chỉ cần đọc là if (!$query)
.
- Tôi xin lỗi vì đã bỏ qua sai lầm đó.
Lưu ý bên: Cả hai '".$var."'
và '$var'
làm điều tương tự. Bạn có thể sử dụng một trong hai, cả hai đều là cú pháp hợp lệ.
Đây là hai truy vấn đã chỉnh sửa:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
và trong trường hợp của bạn:
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
Bạn cũng có thể sử dụng mysqli_
với một phương pháp câu lệnh chuẩn bị :
$query = "SELECT `email` FROM `tblUser` WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
Hoặc phương pháp PDO với câu lệnh đã chuẩn bị :
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- Tốt nhất nên sử dụng các câu lệnh chuẩn bị để giúp bảo vệ chống lại việc chèn SQL.
NB:
Khi xử lý biểu mẫu và mảng POST như được sử dụng / nêu ở trên, hãy đảm bảo rằng mảng POST chứa các giá trị, phương thức POST được sử dụng cho biểu mẫu và khớp các thuộc tính được đặt tên cho các đầu vào.
- FYI: Các biểu mẫu được mặc định thành phương thức GET nếu không được hướng dẫn rõ ràng.
Lưu ý: <input type = "text" name = "var">
- $_POST['var']
phù hợp. $_POST['Var']
không có trận đấu.
- Mảng POST phân biệt chữ hoa chữ thường.
Tham khảo ý kiến:
Lỗi khi kiểm tra tham chiếu:
Xin lưu ý rằng các API MySQL không trộn lẫn với nhau, trong trường hợp bạn có thể đang truy cập phần Hỏi & Đáp này và bạn đang sử dụng mysql_
để kết nối với (và truy vấn với).
- Bạn phải sử dụng cùng một từ kết nối đến truy vấn.
Tham khảo những điều sau về điều này:
Nếu bạn đang sử dụng mysql_
API và không có lựa chọn nào để làm việc với nó, hãy tham khảo phần Hỏi và Đáp sau trên Stack:
Các mysql_*
hàm không được dùng nữa và sẽ bị xóa khỏi các bản phát hành PHP trong tương lai.
- Đã đến lúc bước sang thế kỷ 21.
Bạn cũng có thể thêm ràng buộc DUY NHẤT vào (a) hàng.
Người giới thiệu: