Làm cách nào để tránh trùng lặp tên người dùng và email trong cơ sở dữ liệu của bạn bằng cách sử dụng php và mysqli?

Xác thực tên người dùng và email nếu đã tồn tại. Việc xác thực tên người dùng và email tồn tại là một hạn chế đối với người dùng để xóa trùng lặp. Nếu đã tồn tại email thì hiện thông báo lỗi rồi kiểm tra xem id email đã tồn tại chưa thì hiện thông báo lỗi. Nếu email và tên người dùng không khớp [tồn tại] trong bảng thì hãy chèn dữ liệu vào bảng cơ sở dữ liệu MySQL [hoặc làm điều gì đó theo nhu cầu của bạn]. Để kiểm tra [xác thực] tên người dùng và email, chúng tôi sẽ sử dụng hàm mysqli_num_rows[] sẵn có của PHP. Hàm mysqli_num_rows[] được sử dụng để trả về số hàng. Nếu người dùng điền vào biểu mẫu hoàn chỉnh và nhấp vào nút gửi thì thông báo lỗi sẽ hiển thị nếu tên người dùng và email đã tồn tại. Nếu tên người dùng và id email không tồn tại, thì hãy chèn dữ liệu vào bảng MySQL. [hoặc chạy mã của bạn]

Kiểm tra tên người dùng và email đã tồn tại trong PHP và MYSQL

Bây giờ chúng ta hãy đến với việc thực hiện
'

kiểm tra tên người dùng và email đã tồn tại


 0] {
        
        $row = mysqli_fetch_assoc[$res];
        if[$email==isset[$row['email']]]
        {
            	echo "email already exists";
        }
		if[$username==isset[$row['username']]]
		{
			echo "username  already exists";
		}
		}
else{
	
//do your insert code here or do something [run your code]
}

?>

Trong tập lệnh PHP ở trên, chúng tôi đã hạn chế người dùng chỉ có thể đăng ký một lần bằng một tên người dùng và id email

Nói chung, các bảng hoặc tập hợp kết quả đôi khi chứa các bản ghi trùng lặp. Hầu hết thời gian nó được cho phép nhưng đôi khi bắt buộc phải dừng các bản ghi trùng lặp. Yêu cầu xác định các bản ghi trùng lặp và xóa chúng khỏi bảng. Chương này sẽ mô tả cách ngăn chặn sự xuất hiện của các bản ghi trùng lặp trong một bảng và cách loại bỏ các bản ghi trùng lặp đã tồn tại

Ngăn chặn sự trùng lặp xảy ra trong một bảng

Bạn có thể sử dụng KHÓA CHÍNH hoặc Chỉ mục DUY NHẤT trên bảng có các trường thích hợp để ngăn các bản ghi trùng lặp

Hãy để chúng tôi lấy một ví dụ – Bảng sau đây không chứa chỉ mục hoặc khóa chính như vậy, vì vậy nó sẽ cho phép các bản ghi trùng lặp cho first_name và last_name

CREATE TABLE person_tbl [
   first_name CHAR[20],
   last_name CHAR[20],
   sex CHAR[10]
];

Để ngăn nhiều bản ghi có cùng giá trị họ và tên được tạo trong bảng này, hãy thêm KHÓA CHÍNH vào định nghĩa của nó. Khi bạn thực hiện việc này, cũng cần phải khai báo các cột được lập chỉ mục là KHÔNG NULL, vì KHÓA CHÍNH không cho phép giá trị NULL -

CREATE TABLE person_tbl [
   first_name CHAR[20] NOT NULL,
   last_name CHAR[20] NOT NULL,
   sex CHAR[10],
   PRIMARY KEY [last_name, first_name]
];

Sự hiện diện của một chỉ mục duy nhất trong một bảng thường gây ra lỗi nếu bạn chèn một bản ghi vào bảng sao chép một bản ghi hiện có trong cột hoặc các cột xác định chỉ mục

Sử dụng lệnh INSERT IGNORE thay vì lệnh INSERT. Nếu một bản ghi không trùng lặp với một bản ghi hiện có, thì MySQL sẽ chèn nó như bình thường. Nếu bản ghi trùng lặp, thì từ khóa IGNORE yêu cầu MySQL loại bỏ nó một cách âm thầm mà không tạo ra lỗi

Ví dụ sau không báo lỗi và đồng thời cũng không chèn các bản ghi trùng lặp

mysql> INSERT IGNORE INTO person_tbl [last_name, first_name]
   -> VALUES[ 'Jay', 'Thomas'];
Query OK, 1 row affected [0.00 sec]

mysql> INSERT IGNORE INTO person_tbl [last_name, first_name]
   -> VALUES[ 'Jay', 'Thomas'];
Query OK, 0 rows affected [0.00 sec]

Sử dụng lệnh REPLACE thay vì lệnh INSERT. Nếu bản ghi mới, nó được chèn giống như với INSERT. Nếu trùng lặp thì bản ghi mới sẽ thay thế bản ghi cũ

mysql> REPLACE INTO person_tbl [last_name, first_name]
   -> VALUES[ 'Ajay', 'Kumar'];
Query OK, 1 row affected [0.00 sec]

mysql> REPLACE INTO person_tbl [last_name, first_name]
   -> VALUES[ 'Ajay', 'Kumar'];
Query OK, 2 rows affected [0.00 sec]

Các lệnh INSERT IGNORE và REPLACE nên được chọn theo hành vi xử lý trùng lặp mà bạn muốn thực hiện. Lệnh INSERT IGNORE giữ bộ bản ghi trùng lặp đầu tiên và loại bỏ phần còn lại. Lệnh REPLACE giữ tập hợp các bản sao cuối cùng và xóa mọi bản sao trước đó

Một cách khác để thực thi tính duy nhất là thêm một chỉ mục ĐỘC ĐÁO thay vì một KHÓA CHÍNH vào một bảng

CREATE TABLE person_tbl [
   first_name CHAR[20] NOT NULL,
   last_name CHAR[20] NOT NULL,
   sex CHAR[10]
   UNIQUE [last_name, first_name]
];

Đếm và xác định trùng lặp

Sau đây là truy vấn để đếm các bản ghi trùng lặp với first_name và last_name trong một bảng

mysql> SELECT COUNT[*] as repetitions, last_name, first_name
   -> FROM person_tbl
   -> GROUP BY last_name, first_name
   -> HAVING repetitions > 1;

Truy vấn này sẽ trả về danh sách tất cả các bản ghi trùng lặp trong bảng person_tbl. Nói chung, để xác định các bộ giá trị bị trùng lặp, hãy làm theo các bước dưới đây

  • Xác định cột nào chứa các giá trị có thể bị trùng lặp

  • Liệt kê các cột đó trong danh sách chọn cột, cùng với COUNT[*]

  • Liệt kê cả các cột trong mệnh đề GROUP BY

  • Thêm mệnh đề HAVING để loại bỏ các giá trị duy nhất bằng cách yêu cầu số lượng nhóm phải lớn hơn một

Loại bỏ các bản sao khỏi kết quả truy vấn

Bạn có thể sử dụng lệnh DISTINCT cùng với câu lệnh SELECT để tìm ra các bản ghi duy nhất có sẵn trong một bảng

mysql> SELECT DISTINCT last_name, first_name
   -> FROM person_tbl
   -> ORDER BY last_name;

Một cách thay thế cho lệnh DISTINCT là thêm mệnh đề GROUP BY đặt tên cho các cột bạn đang chọn. Điều này có tác dụng loại bỏ các giá trị trùng lặp và chỉ chọn các kết hợp giá trị duy nhất trong các cột đã chỉ định

________số 8_______

Loại bỏ các bản sao bằng cách sử dụng thay thế bảng

Nếu bạn có các bản ghi trùng lặp trong một bảng và bạn muốn xóa tất cả các bản ghi trùng lặp khỏi bảng đó, hãy làm theo quy trình dưới đây

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
   -> FROM person_tbl;
   -> GROUP BY [last_name, first_name];

mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Một cách dễ dàng để loại bỏ các bản ghi trùng lặp khỏi bảng là thêm INDEX hoặc PRIMARY KEY vào bảng đó. Ngay cả khi bảng này đã có sẵn, bạn có thể sử dụng kỹ thuật này để xóa các bản ghi trùng lặp và bạn cũng sẽ an toàn trong tương lai

Làm cách nào để ngăn email trùng lặp trong PHP?

hàm php createUser[$email] { $sql = "CHỌN * TỪ vols2012 WHERE email='$email'" ; . " ] ; }//end if function check_input[$data, $problem=''] { $data = trim[$data]; $data = dải[$data]; $data

Làm cách nào để tránh chèn các bản ghi trùng lặp trong Mysqli bằng PHP?

Lưu ý − Sử dụng lệnh INSERT IGNORE thay vì lệnh INSERT . Nếu một bản ghi không trùng lặp với một bản ghi hiện có, thì MySQL sẽ chèn nó như bình thường. Nếu bản ghi trùng lặp, thì từ khóa IGNORE yêu cầu MySQL loại bỏ nó một cách âm thầm mà không tạo ra lỗi.

Làm thế nào chúng ta có thể tránh trùng lặp dữ liệu trong cơ sở dữ liệu?

Bạn có thể ngăn các giá trị trùng lặp trong một trường trong bảng Access bằng cách tạo một chỉ mục duy nhất. .
Thay thế index_name bằng tên cho chỉ mục của bạn. .
Thay thế bảng bằng tên của bảng chứa trường được lập chỉ mục

Làm cách nào để tránh trùng lặp trong cơ sở dữ liệu MySQL?

Bạn có thể sử dụng KHÓA CHÍNH hoặc Chỉ mục DUY NHẤT trên bảng có các trường thích hợp để dừng các bản ghi trùng lặp . Hãy để chúng tôi lấy một ví dụ - Bảng sau đây không chứa chỉ mục hoặc khóa chính như vậy, vì vậy nó sẽ cho phép các bản ghi trùng lặp cho first_name và last_name.

Chủ Đề