Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用包含空值的数组执行PDO准备语句_Php_Pdo - Fatal编程技术网

Php 使用包含空值的数组执行PDO准备语句

Php 使用包含空值的数组执行PDO准备语句,php,pdo,Php,Pdo,我目前有一个数组,其中包含表单中的值,要使用PDO插入数据库 某些值是可选字段,因此有时会填充,而NULL其他值则会填充 我插入的表大约有50行长,我使用以下内容: $sth = Database::get()->prepare("INSERT INTO $this->_insertTbl (field1, field2, field3) VALUES

我目前有一个数组,其中包含表单中的值,要使用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
,但是,当我使用数组执行语句时,有没有办法解决这个问题,或者我需要单独列出每个参数?

NULL
在我的经验中对绑定参数不起作用。如果值为
NULL
,则跳过赋值

我还用空字符串替换了
NULL
,然后

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

(假设您足够幸运>=PHP5.3。)

更新 将列名和值转换为一个数组,并使用
join()
将它们连接起来


这允许您在需要时轻松构建某些成员。

如何跳过绑定值?我目前有一条语句列出了
:value
form@lethal很大程度上取决于如何编写SQL。只需跳过插入中的作业(通过跳过
column=“abc”
或未将其列在parens内的第一组中。我遇到的问题是,例如,在我的数据库中,
address2
,有时它将为NULL,而其他时候它将被填充。因此,据我所知,它需要绑定?@lethalMango如果不填充它,它将在数据库中保持为NULL,不是吗?我已更新了my带示例数组和查询格式的原始问题。如果您能参考我的更新解释您的解决方案,那将非常棒:)