我有一个从API返回的数组,尽管一些键/值并不总是存在。
例子数组
Array
(
[example0] => data
[example1] => data
[example2] => data
[example3] => data
)
现在如果我使用如下的查询
$dbh = $this->database->prepare("INSERT INTO table(example0, example1, example2, example3)VALUES(:example0, :example1, :example2, :example3)");
$dbh->execute(array(
"example0" => $data['example0'],
"example1" => $data['example1'],
"example2" => $data['example2'],
"example3" => $data['example3']
));
它会工作的很好。但是当API返回像
这样的数组时Array
(
[example0] => data
[example1] => data
[example3] => data
)
它将导致一个错误,由于一个值没有被设置,有没有一种方法,只是让它不输入到列,而不是抛出一个错误?我使用了一个非常大的查询,所以为每个值写一个if/else不是一个好主意(在我看来,对于性能而言)
您必须检查键是否设置并且最终是否存在值:
if(isset($array['your_key']) && !empty($array['your_key'])) { }
我不能从你的代码中弄清楚,但是在你在查询中使用它之前验证一切。
[编辑]示例:
$keys = array('example1', 'example2', 'example3', 'example4');
$use_in_query = array();
foreach($keys as $key)
{
if(isset($array[$key]) && !empty($array[$key])) $use_in_query[$key] = $array[$key];
}
Now you can use the $use_in_query var in your query.
$dbh->execute($use_in_query);
(/编辑)