Tôi muốn thực hiện truy vấn được tham số hóa để thực hiện tìm kiếm theo các tham số do người dùng cung cấp. Có khá nhiều tham số và không phải tất cả các tham số đều được cung cấp mọi lúc. Làm cách nào để tạo truy vấn chuẩn chỉ định tất cả các tham số có thể, nhưng bỏ qua một số tham số này nếu người dùng không chọn giá trị tham số có ý nghĩa?Bỏ qua WHERE tiêu chí
Dưới đây là một ví dụ tưởng tượng để minh họa cho những gì tôi sẽ cho
$sql = 'SELECT * FROM people WHERE first_name = :first_name AND last_name = :last_name AND age = :age AND sex = :sex';
$query = $db->prepare($sql);
$query->execute(array(':first_name' => 'John', ':age' => '27');
Rõ ràng, điều này sẽ không làm việc vì số lượng các thông số được cung cấp không phù hợp với số lượng các thông số mong đợi. Tôi có phải thực hiện truy vấn mỗi khi chỉ có các tham số được chỉ định được bao gồm trong mệnh đề WHERE hay có cách nào để nhận một số tham số này bị bỏ qua hoặc luôn trả về true khi được chọn không?
Tôi không nghĩ rằng đó là những gì ông muốn. Điều này sẽ khớp với 'first_name' có một giá trị khớp, hoặc nếu nó là null. Nhưng từ những gì tôi hiểu, anh ta muốn 'first_name' để phù hợp với bất cứ điều gì (như thể không có mệnh đề WHERE cho cột đó). – netcoder
@netcoder nó không kiểm tra nếu first_name là null, nó đang kiểm tra nếu '(first_name = @var hoặc @var là null)' –
Oh, bạn nói đúng, tôi đọc quá nhanh :) – netcoder