簡體   English   中英

使用 PHP 類/函數將 NULL 插入到 mySQL-DB 而不是 0000-00-00

[英]Insert NULL to mySQL-DB instead of 0000-00-00 using PHP Class/function

我的 PHP 類/函數有一個小問題,它將數據添加到我的 mySQL 數據庫中。 html/php 中有一個表單,它在提交時調用一個函數將數據插入到數據庫中。 表單內有一個日期字段,可以選擇填寫。

當我現在將表單數據傳遞給我的函數以插入到數據庫並且用戶沒有輸入日期時,mySQL 總是將“0000-00-00”插入到日期字段 (pt_duedate) 而不是 NULL。 但是如果用戶沒有提供截止日期,我希望 mysql 插入 NULL。 如果用戶提供日期,我希望 mysql 插入該日期。

我目前的解決方法是觸發第二個查詢以設置 pt_duedate=NULL where pt_duedate='0000-00-00' 但我認為這不是一個好方法。

我在這里和谷歌上閱讀了幾個主題,但無法解決我的問題。

希望你們對我有任何想法/提示。

    public function addDiary($pid, $vals = array() )
    {
        $query = $this->pdo->prepare("INSERT INTO tbl_project_diary SET
                                        pt_date = :date,
                                        pt_category = :category,
                                        pt_type = :type,
                                        pt_responsible = :responsible,
                                        pt_duedate = :duedate,
                                        pt_text = :text,
                                        pid = :pid,
                                        pt_created_by = :created,
                                        pt_updated_by = :updated");
        
        $x=1;
        foreach($vals as $val){
            $val = esc($val);
            $query->bindValue($x, $val);
            $x++;
        }
        $query->bindParam("pid", $pid, PDO::PARAM_INT);
        $query->bindParam("created", $_SESSION['usr_id'], PDO::PARAM_INT);
        $query->bindParam("updated", $_SESSION['usr_id'], PDO::PARAM_INT);
        $query->execute();
    }

**Database table tbl_project_diary**
pt_date DATE
pt_category VARCHAR
pt_type = VARCHAR
pt_responsible = INTEGER
pt_duedate = DATE
pt_text = TEXT
pid = INTEGER
pt_created_by = INTEGER
pt_updated_by = INTEGER

非常感謝! :)

檢查該字段是否為空並改為綁定到null

        foreach($vals as $val){
            $query->bindValue($x, $val == '' ? null : $val);
            $x++;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM