情况如下:
我有一个可选的输入字段,如果用户填写,我不在乎。如果他离开是空的,我想要记录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();
}
答案 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);