使用包含空值的数组执行PDO预处理语句

时间:2011-08-22 23:03:44

标签: php pdo

我目前有一个数组,其中包含要使用PDO插入数据库的表单中的值。

某些值是可选字段,因此有时会填充NULL其他字段。

我插入的表大约有50行,我使用以下内容:

$sth = Database::get()->prepare("INSERT INTO $this->_insertTbl
                                 (field1, field2, field3)
                                 VALUES
                                 (:field1, :field2, :field3)");
$sth->execute($dataArr);

$dataArr有时可以包含空值,例如:

Array
(
    [field1] => 44
    [field2] => NULL
    [field3] => Jammin
}

其他时候没有:

Array
(
    [field1] => 44
    [field2] => Harry
    [field3] => William
}

通常使用完全填充的变量和空字符串,但似乎不适用于某些NULL值。

通常情况下,据我所知你会使用bindValue而不是bindParam,但是因为我正在使用数组执行语句有任何方法,或者我需要列出每个一个人?

1 个答案:

答案 0 :(得分:0)

根据我的经验,

NULL不适用于绑定参数。如果值为NULL,则跳过作业。

我之前用空字符串替换NULL ......

$params = array_map(function($param) {
    return is_null($param) ? '' : $param;
}, $params);

CodePad

(假设你有幸成为> = PHP 5.3。)

更新

将列名称和值转换为数组,并将其与join()连接。

这使您可以根据需要轻松构建某些成员。