2009-07-16 36 views
15

Cách chèn giá trị NULL hoặc trống vào trường loại ngày tháng mysql (NULL = có).làm cách nào để chèn một giá trị rỗng vào trường loại ngày của tôi?

Nếu tôi cố gắng chèn một giá trị trống, nó chèn 0000-00-00 nhưng tôi muốn giữ trống hoặc NULL.

Cảm ơn bạn đã trợ giúp.

CẬP NHẬT

Xin xem mà tôi đã thiết lập giá trị mặc định là NULL

`payment_due_on` date DEFAULT NULL, 

OKies Ok

tôi đã nhận nó làm việc bây giờ

function get_mysqlDate($date, $delimiter='/') { 
    if(check_empty($date)) { 
     return 'NULL'; 
    } 
    list($d, $m, $y) = explode($delimiter, $date); 
    //$datetime = strtotime($date); 
    return "'".date('Y-m-d', mktime(0,0,0,$m, $d, $y))."'"; 
} 




"... SET mydate = ".get_mysqldate($_POST['mydate'])." ...." 

Cheers

+0

Bạn có thực sự chèn một Chuỗi rỗng hoặc NULL thực sự không? (hoặc không specifing bất cứ điều gì) Có lẽ chuỗi rỗng được hiểu là 0000-00-00 – HerdplattenToni

Trả lời

18

Nếu điều đó xảy ra, đó là do cột đã được xác định với NOT NULL hoặc với default '0000-00-00'. Bạn cần phải thay đổi định nghĩa cột để cho phép NULL s và không có mặc định.

Chèn của bạn cũng phải chỉ định NULL, không phải là '', nếu đó là ý của bạn là "giá trị trống".

+0

Tôi đã đề cập rằng tôi đã thiết lập NULL = yes và giá trị mặc định là NULL là tốt. – TigerTiger

+1

Và bạn có NULL không phải là 'NULL' trong câu lệnh của bạn? "INSERT ... VALUES (NULL, 1, 2)" – VolkerK

0

Chỉ cần bỏ qua trường khi bạn chèn.

Say bảng của bạn là như thế này:

CREATE TABLE mytable(
`name` VARCHAR(30) NOT NULL, 
`payment_due_on` date DEFAULT NULL); 

Nếu bạn muốn chèn một cái gì đó mà không có ngày, sử dụng:

INSERT INTO mytable (name) VALUES ('name here'); 
2

phew .. đã đấu tranh với điều null này một chút.

Tôi đã có một tập lệnh php sao chép, định dạng và lưu trữ dữ liệu từ một cơ sở dữ liệu A đến cơ sở dữ liệu B. có trường ngày trong cơ sở dữ liệu A với giá trị NULL. nhưng khi tôi sao chép nó, nó đã trở thành 0000-00-00 trong cơ sở dữ liệu của tôi B.

cuối cùng cũng tìm ra bởi vì tôi đã đặt dấu nháy đơn quanh NULL như ('NULL').

$started_date = mysql_result($databaseA['result'],$i,"start_date"); 

    if (empty($published_at_date)){ 
    $insert_sql .= "NULL, "; 
    } 
    else 
    { 
    $insert_sql .= " '" . mysql_real_escape_string($started_date) ."', "; 
    } 

Điều này đã sửa nó.

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