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