这里有一个类似的问题,但实际上这并没有给我答案:
PHP + PDO: Bind null if param is empty
我需要我的语句循环工作,只更改绑定变量。
喜欢:
$this->array = array(
"cell1" => "",
"cell2" => "",
);
$this->sth = $db->prepare("INSERT INTO `table`
(`coloumn1`, `coloumn2`)
VALUES (:coloumn1, :coloumn2)");
$this->sth->bindParam(:coloumn1, $this->array['cell1'], PDO::PARAM_STR);
$this->sth->bindParam(:coloumn2, $this->array['cell2'], PDO::PARAM_STR);
//Data proccessing...
foreach($data as $value){
$this->array['cell1'] = $value['cell1'];
$this->array['cell2'] = $value['cell2'];
try {
this->sth->execute();
print_r($this->sth->errorInfo());
}
catch(PDOException $e){
echo 'sh*t!';
}
}
一切正常,直到其中一个值为空字符串。我的问题是当 'cell1' 是一个空字符串时,绑定参数是一个空引用,它不起作用。但是由于循环,我需要引用的绑定,所以 bindValue 不是解决方案。
而且我非常需要循环,因为我要处理大量数据。
有什么建议吗?
我在执行之前尝试过:
foreach($this->array as $value){
if(!$value) {
$value = "";
}
}
它不起作用。解决我的问题的唯一方法是修改为:
$this->array['cell1'] = !empty($value['cell1']) ? $value['cell1'] : "";
$this->array['cell2'] = !empty($value['cell2']) ? $value['cell2'] : "";
但这似乎太垃圾了......