Làm cách nào để kiểm tra xem giá trị có tồn tại trong bảng SQL php không?

Câu trả lời. Sử dụng hàm PHP in_array()

Bạn có thể sử dụng hàm PHP in_array() để kiểm tra xem một giá trị có tồn tại trong một mảng hay không

Hãy xem một ví dụ để hiểu cơ bản nó hoạt động như thế nào

";
if(in_array("Tiger", $zoo)){
    echo "The tiger was found in the zoo.";
}
?>


Câu hỏi thường gặp liên quan

Dưới đây là một số câu hỏi thường gặp khác liên quan đến chủ đề này

Ví dụ dưới đây đang sử dụng các câu lệnh chuẩn bị mysqli để chọn một giá trị từ cơ sở dữ liệu. Và đó là cách duy nhất để chạy các truy vấn như vậy, bởi vì nó ngăn ngừa các lỗi cú pháp và SQL injection

Mã đầy đủ

Để xem liệu một số giá trị có tồn tại trong cơ sở dữ liệu hay không, chúng ta không bao giờ nên chọn chính dữ liệu đó mà chỉ chọn số hàng chứa giá trị được yêu cầu

$sql  = "SELECT count(1) FROM users WHERE name = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $name);
$stmt->execute();
$stmt->bind_result($found);
$stmt->fetch();
if ($found)
{
    echo "found :)";
} else {
    echo "not found :'(";
}

lời giải thích

Hãy xem những gì đang xảy ra ở đây

$sql  = "SELECT count(1) FROM users WHERE name = ?";

Truy vấn SQL mà chúng ta đang chạy ở đây có một phần trường đặc biệt. trên thực tế, chúng tôi không chọn bất kỳ trường thực tế nào từ bảng, mà chỉ chọn kết quả của hàm tổng hợp count(1). Tham số 1 không có bất kỳ ý nghĩa thực sự nào và nó có thể là bất kỳ giá trị không đổi nào. Nó nói mysql đếm tất cả các hàng được trả về

$stmt = $mysqli->prepare();
$stmt->bind_param("s", $name);
$stmt->execute();

đó là công cụ chuẩn bị/thực thi thông thường để thực hiện truy vấn của chúng ta và làm cho biến $name bị ràng buộc với một dấu chấm hỏi trong truy vấn

$stmt->bind_result($found);
$stmt->fetch();

ở đây chúng tôi đang lưu trữ kết quả duy nhất được trả về bởi truy vấn (kết quả của hàm count(1)) vào biến

$sql  = "SELECT count(1) FROM users WHERE name = ?";
0

Bây giờ biến

$sql  = "SELECT count(1) FROM users WHERE name = ?";
0 chứa số lượng hàng được tìm thấy. Nếu không tìm thấy hàng nào, nó sẽ chứa 0, bằng với
$sql  = "SELECT count(1) FROM users WHERE name = ?";
2 khi được sử dụng trong toán tử có điều kiện, trong khi bất kỳ giá trị nào khác sẽ được tính là
$sql  = "SELECT count(1) FROM users WHERE name = ?";
3

if ($found)
{
    echo "found :)";
} else {
    echo "not found :'(";
}

Như bạn có thể nhận thấy, số lượng mã khá lớn đối với một thao tác đơn giản như vậy. Nhưng một lập trình viên luôn có thể tạo các công cụ của riêng họ để tự động hóa các tác vụ lặp đi lặp lại hàng ngày. Và may mắn thay, chúng ta đã có một công cụ như vậy, một chức năng trợ giúp mysqli đơn giản. Sử dụng chức năng này, mã sẽ trở nên đơn giản như

Than ôi, nó hoàn toàn sai. Kết quả của truy vấn không liên quan gì đến số lượng hàng được tìm thấy. Một kết quả trống vẫn là một kết quả hợp lệ, nó không thể là false chỉ vì truy vấn không tìm thấy gì

Trên thực tế, mã để kiểm tra xem một số giá trị có tồn tại trong cơ sở dữ liệu hay không sẽ chỉ là một quy trình thông thường cho các truy vấn được chọn

Và tất nhiên, một tuyên bố chuẩn bị là bắt buộc. KHÔNG bao giờ đặt một biến dữ liệu trực tiếp vào truy vấn. Thay vào đó, hãy luôn sử dụng trình giữ chỗ

Làm cách nào để kiểm tra xem một giá trị có tồn tại không?

Để kiểm tra xem một giá trị cụ thể có tồn tại trong cơ sở dữ liệu hay không, bạn chỉ cần chạy một truy vấn CHỌN thông thường, tìm nạp một hàng và xem có thứ gì đã được tìm nạp hay không

Cho trước $pdo chứa một phiên bản PDO hợp lệ, mã sẽ là

$email = "[email protected]";
$stmt = $pdo->prepare("SELECT * FROM users WHERE email=?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user) {
    // email found
} else {
    // or not

Ở đây chúng tôi đang chọn một hàng phù hợp với tiêu chí của chúng tôi, sau đó tìm nạp nó và sau đó kiểm tra xem có thứ gì đã được chọn hay chưa

ghi chú

Cũng hợp lý khi chỉ chọn một giá trị hằng số duy nhất để giảm một chút chi phí, nếu chúng ta sẽ không sử dụng bất kỳ dữ liệu đã chọn nào. Vì mục đích đó, đơn giản thay thế * bằng 1. Có một hàm hoặc một phương thức của lớp cho mục đích này cũng sẽ hữu ích

function emailExists($pdo, $email) {
    $stmt = $pdo->prepare("SELECT 1 FROM users WHERE email=?");
    $stmt->execute([$email]);
    return $stmt->fetchColumn();
)

if (emailExists($pdo, $email)) {
    // found
}

ở đây chúng tôi đang sử dụng một phương thức tiện dụng của PDO là fetchColumn trả về một giá trị đã chọn hoặc ngược lại là false. Cho trước 1 sẽ được coi là

$email = "[email protected]";
$stmt = $pdo->prepare("SELECT * FROM users WHERE email=?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user) {
    // email found
} else {
    // or not
0 bởi câu lệnh
$email = "[email protected]";
$stmt = $pdo->prepare("SELECT * FROM users WHERE email=?");
$stmt->execute([$email]);
$user = $stmt->fetch();
if ($user) {
    // email found
} else {
    // or not
1, chúng ta có thể trả về trực tiếp kết quả của phương thức này. Tuy nhiên, trong trường hợp bạn thích nhập nghiêm ngặt, giá trị trả về có thể được chuyển thành boolean

    return (bool)$stmt->fetchColumn();

Ngoài ra, như có thể thấy ở trên, một giải pháp phổ biến với số lượng hàng được trả về là không cần thiết. Gọi $stmt->numRows() chỉ là thừa, chưa kể nó có thể không khả dụng do một số trình điều khiển hoặc cài đặt

Làm cách nào để kiểm tra dữ liệu tồn tại hay không trong PHP?

Hàm PHP isset() . Hàm này trả về true nếu biến tồn tại và không phải là NULL, ngược lại trả về false.

Làm cách nào để kiểm tra dữ liệu trong bảng trong MySQL?

Lệnh đầu tiên bạn cần sử dụng là câu lệnh SELECT FROM MySQL có cú pháp như sau. CHỌN * TỪ tên_bảng; Đây là một truy vấn MySQL cơ bản sẽ yêu cầu tập lệnh chọn tất cả các bản ghi từ bảng tên_bảng.

Làm cách nào để kiểm tra các giá trị trong MySQL?

Ràng buộc CHECK được sử dụng để giới hạn phạm vi giá trị có thể được đặt trong một cột . Nếu bạn xác định ràng buộc KIỂM TRA trên một cột, nó sẽ chỉ cho phép một số giá trị nhất định cho cột này. Nếu bạn xác định một ràng buộc KIỂM TRA trên một bảng, nó có thể giới hạn các giá trị trong các cột nhất định dựa trên các giá trị trong các cột khác trong hàng.