PHP вставить mysql NULL в пустое значение массива для вставки PDO - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть функция 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;


    }

1 Ответ

0 голосов
/ 12 февраля 2019

Просто укажите NULL вместо пустой строки '' при вставке в БД, например, так:

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

Тогда он оставит его пустым вместо пустой строки.

Также обратите внимание, что ваша структура поля в БД должна позволять ей быть равной NULL, иначе она выдаст ошибку, которая field cannot be null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...