Tôi đã chuyển đổi một ứng dụng để sử dụng các câu lệnh chuẩn bị PDO thay vì mysqli và tôi đang gặp phải một vấn đề lạ. Tôi có một số hồ sơ trong cơ sở dữ liệu mà nó dự kiến rằng một trường sẽ là null. Không phải 'null' (chuỗi), hoặc '' (chuỗi rỗng), nhưng NULL. Tôi xây dựng các truy vấn của mình động, vì vậy trong quá khứ khi tôi bắt gặp một biến null trong một đối tượng, tôi sẽ tạo truy vấn như sau:Chọn các hàng trong đó một trường rỗng bằng cách sử dụng các câu lệnh chuẩn bị PDO PHP và MySQL
WHERE fieldName is null;
Và sẽ nhận được kết quả mong đợi khi trường đó là rỗng.
Bây giờ với PDO, truy vấn của tôi không trả lại bất kỳ kết quả nào và tôi không gặp phải bất kỳ lỗi nào. Nó chỉ đơn giản là không trả lại các hồ sơ tôi mong đợi. Khi tôi echo các truy vấn được xây dựng và chạy chúng trực tiếp trong MySQL tôi nhận được kết quả mong đợi, nhưng trong ứng dụng không có kết quả trả về.
Một số trong những điều tôi đã cố gắng bao gồm truy vấn xây dựng mà trông như thế này:
WHERE fieldName is null;
hoặc
WHERE fieldName <=> null;
Tôi cũng đã cố gắng tiêu chuẩn chuẩn bị tuyên bố:
WHERE fieldName = :fieldName
và sau đó ràng buộc với các loại báo cáo sau:
$stmt->bindParam(":$field", $value);
$stmt->bindParam(":$field", $value, PDO::PARAM_NULL);
$stmt->bindParam(":$field", null, PDO::PARAM_NULL);
$stmt->bindValue(":$field", null, PDO::PARAM_NULL);
$stmt->bindValue(":$field", null, PDO::PARAM_INT);
Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao. Phiên bản PHP của tôi là 5.3.10 và MySQL là 5.5.22. Là một câu hỏi phụ, tôi vẫn không rõ ràng về sự khác biệt giữa bindParam và bindValue, vì vậy nếu nó có ý nghĩa để bao gồm trong câu trả lời của bạn, tôi thực sự sẽ đánh giá cao một số làm rõ về chủ đề ...
Câu hỏi khác nhau, nhưng tất cả mọi người đang ở đây: http://stackoverflow.com/questions/1391777/how-do-i-insert-null-values-using-pdo –
Tôi đã thử tất cả các đề xuất khác nhau từ câu hỏi đó và không có câu hỏi nào đã hoạt động cho đến thời điểm này ... – cdwhatcott
Nếu bạn đang chèn hoặc tìm kiếm trên null, tại sao bạn cần phải tham số hóa nó? –