我有一个从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不是一个好主意(在我看来,为了性能明智)
答案 0 :(得分:0)
您必须检查密钥是否已设置,并且最终是否存在值:
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);
[/编辑]