Php 使用包含空值的数组执行PDO准备语句
我目前有一个数组,其中包含表单中的值,要使用PDO插入数据库 某些值是可选字段,因此有时会填充,而Php 使用包含空值的数组执行PDO准备语句,php,pdo,Php,Pdo,我目前有一个数组,其中包含表单中的值,要使用PDO插入数据库 某些值是可选字段,因此有时会填充,而NULL其他值则会填充 我插入的表大约有50行长,我使用以下内容: $sth = Database::get()->prepare("INSERT INTO $this->_insertTbl (field1, field2, field3) VALUES
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带示例数组和查询格式的原始问题。如果您能参考我的更新解释您的解决方案,那将非常棒:)