0

状況は次のとおりです。

オプションの入力フィールドがありますが、ユーザーが入力するかどうかは気にしません。彼がそれを空のままにする場合は、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();  
}
4

2 に答える 2

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 に答える
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 に答える