簡體   English   中英

PHP在PDO插入的空數組值中插入mysql NULL

[英]PHP insert mysql NULL in empty array value for PDO insert

我有一個pdo函數,該函數使用數組將值添加到表中。 它添加得很完美,我的問題是,如果數組值為空,則必須將其添加為NULL值,而不是數據庫中的空白字段。 我有一個數組,用於創建mysql查詢。 例如數組

$arr = [
    'table' => [
        'fields' => [
            'id',
            'keyname',
            'lang',
            'value'
        ],
        'values' => [
            '',
            'some key name',
            'some lang',
            'some value'
        ]
    ]
];

我嘗試了以下內容(僅是一個基本示例)

foreach($array as $a => $v) {

   foreach($v as $p => $r){

      foreach($r as $f){

         $val = NULL;
         $f = trim($f);     

         if (empty($f)) {   
           $stmt->bindParam($f, $val, PDO::PARAM_NULL);             
           echo "empty <br/>";
        }

      }

   }

}

對於數組中的所有空值,上面的方法的確返回true,但是,當我運行將這些值插入數據庫的方法時,它們將顯示空白字段,而不是NULL 我還嘗試了array_map函數,該函數根本不起作用。

這是我正在編寫的整個函數:

public function add($array) {

        $result = true;

        foreach($array as $a => $v) {

            // the pdoquery prepares the statement to work as mysql query
            $sql = $this->pdoquery($a, $v);

            $query = "INSERT INTO " . $sql;

            $stmt = $this->db->prepare($query);

            ////this is where I am adding the foreach loops

            $exec = $stmt->execute();

            if(!$exec) $result = false;
        }
        if($result) {
            $id = $this->db->lastInsertId();
            return $id;
        }
        else return false;


    }

像這樣插入數據庫時​​,只需提供NULL而不是空字符串''

$arr = [
    'table' => [
        'fields' => [
            'id',
            'keyname',
            'lang',
            'value'
        ],
        'values' => [
            null,
            'some key name',
            'some lang',
            'some value'
        ]
    ]
];

然后它將保留為空而不是空字符串。

還請注意,您在DB中的字段結構必須允許它可以為NULL,否則將返回錯誤,即field cannot be null

暫無
暫無

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

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