0

情况如下:

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

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

例如,我有这样的输入字段与之对应:

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

如果我提交表单时未触及此字段,MySQL 会将其记录为 0.00。有没有办法强制它记录 NULL 呢?

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

聚苯乙烯。如果我通过 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);

保存记录()

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

2 回答 2

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);
于 2013-08-07T16:55:16.807 回答
0

您可以使用触发器来处理:

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语句之前用 NULL 替换列的内容,如果它是空的。

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

于 2013-08-07T16:36:33.103 回答