如果字段为空,强制mysql记录NULL?

时间:2013-08-07 16:07:27

标签: mysql null

情况如下:

我有一个可选的输入字段,如果用户填写,我不在乎。如果他离开是空的,我想要记录NULL。

然后有这个字段例如:DECIMAL(10,2),标记它可以为NULL,默认值设置为NULL。

例如,我有一个与之对应的输入字段:

<input type="text" name="foo" size="4"/>

如果我在不触及此字段的情况下提交表单,则MySQL将其记录为0.00。有没有办法强制它记录NULL呢?

PS。其他字段类型也是如此。例如,我也有INT。在这种情况下,0被记录下来。

PPS。如果我通过PhpMyAdmin插入给定的记录,并将给定的字段留空,则根据需要记录NULL值。

HTML

<label>Svoris: <input type="text" name="load_weight1" size="4"></label>
<label>Tūris(m<sup>3</sup>)<input type="text" name="load_volume1" size="4"></label>

PHP

$data["load_weight"] = $this->input->post("load_weight1");
$data["load_volume"] = $this->input->post("load_volume1");
$quoteid = $this->uzklausos_forma_model->saveRecord($data);

saveRecord()

function saveRecord($items)
{
    $this->db->insert('request_quote', $items);
    return $this->db->insert_id();  
}

2 个答案:

答案 0 :(得分:0)

您可以使用trigger

处理
CREATE TRIGGER ins_tbl_null BEFORE INSERT ON tbl
FOR EACH ROW
BEGIN
    IF NEW.value = "" THEN
        SET NEW.value = NULL;
    END IF;
END;

上面的代码将告诉MySQL在每个INSERT语句之前将列 value 的内容替换为NULL(如果它为空)。

有关实例,请参阅http://sqlfiddle.com/#!2/2b259/1

答案 1 :(得分:0)

您可以尝试在PHP部分中添加一些条件。因此,如果值为空,则该字段将不会传递给saveRecord函数...

if ($this->input->post("load_weight1")!="") {
    $data["load_weight"] = $this->input->post("load_weight1");
}
if ($this->input->post("load_volume1")!="") {
    $data["load_volume"] = $this->input->post("load_volume1");
}
$quoteid = $this->uzklausos_forma_model->saveRecord($data);