2013-01-08 28 views
10

Tôi có cơ sở dữ liệu Mysql nơi tôi giữ ngày tháng của đơn đặt hàng của khách hàng.

Ngày được tạo bởi hàm php date('Y-m-d'). Hai bản ghi trong cơ sở dữ liệu của tôi có giá trị '0000-00-00'. Một được tạo ra bởi một khách hàng từ Úc và một khách hàng từ Ý. 5000 đơn đặt hàng khác là tốt.

Câu hỏi của tôi là làm cách nào để có thể tạo ngày như vậy? Nó có thể là một cái gì đó với các thiết lập trình duyệt cá nhân?

Cảm ơn bạn đã trợ giúpNgày Php/Mysql được lưu dưới dạng '0000-00-00'

Trả lời

12

Lý do duy nhất tôi có thể tìm thấy là khách hàng của bạn đã nhập định dạng ngày không đúng hoặc anh ấy đã nhập một chuỗi trống. Hãy nhớ định dạng ngày trong Mysql là yyyy-mm-dd.

+7

Chỉ cần thêm vào kiến ​​thức của bạn, 'yyyy-mm-dd' trong PHP là 'Y-m-d' – TechSpellBound

+0

@Gaurav cảm ơn, yup lỗi của tôi .. –

7

Điều đó có nghĩa là MySQL đã được chuyển một giá trị không hợp lệ bao gồm không có giá trị nào cả. Kiểm tra mã của bạn để đảm bảo mã luôn có giá trị hợp lệ cho ngày đó.

+1

Mọi thứ đều ổn. Khách hàng chọn ngày trong bộ chọn ngày. Anh ta không có oportunity để cung cấp một ngày không hợp lệ. Tôi đã kiểm tra trước đó vì vậy tôi đang tìm kiếm các giải pháp khác – gniewleone

+0

Có thể là khách hàng đã tắt JavaScript. Có thể JavaScript không tải được. Có thể là khách hàng biết cách bỏ qua xác thực JavaScript. –

2

Kiểm tra bài đăng này default date '0000-00-00 00:00:00' or null. Nó sẽ trả lời câu hỏi của bạn. Có lẽ, các biến năm, tháng và ngày ở mã phía máy khách của chúng chưa được khởi tạo.

EDIT Nếu đó không phải là trường hợp, sau đó có vẻ như bạn có recently changed the Date-related column trong cơ sở dữ liệu từ VARCHAR or TEXT để DATE.

MySql changes tất cả NULL giá trị trong trường hợp này là '0000-00-00'. Vì vậy, nếu một số thời gian trở lại, ngày đã không được một lĩnh vực bắt buộc trên giao diện người dùng và nếu nó đã được thông qua như NULL, sau đó điều trên đã xảy ra.

+0

Ngày luôn là ngày DATE. Lần đầu tiên tôi có một '0000-00-00' là khoảng 12 giờ trước. Trước đó mọi thứ đều tốt đẹp – gniewleone

+0

thư viện nào làm datepicker thuộc về? – TechSpellBound

3

Tôi nhận thấy tôi đã gặp vấn đề chính xác, và hóa ra đơn giản là tôi không đặt dấu nháy đơn quanh biến $ date khi chèn nó, do đó nó chèn giá trị rỗng hoặc trống xuất hiện 0000-00-00 trong cơ sở dữ liệu. Khi tôi đặt '$ date' thay vì $ date trong tuyên bố chèn của tôi, giá trị xuất hiện như mong đợi.

0

Có thể là trường hợp bạn đã hoàn toàn được lập trình hoặc lỗi thời mysql chức năng. Ví dụ: CURDATE() + 5 sẽ chèn ngày chính xác trong DB, tuy nhiên nếu người dùng thực hiện trên 2016-12-28, DB sẽ hiển thị 0000-00-00. Nó sẽ hoạt động tốt nếu nó là ngày hiện tại là 2016-12-20. Hàm hoàn toàn chính xác sẽ là CURDATE() + INTERVAL 5 DAY. Bạn viết vào đầu tháng 1, vì vậy có thể bạn có vấn đề tương tự.

Các vấn đề liên quan