在插入数据库之前检查数组中是否存在值

时间:2014-05-20 10:25:22

标签: php arrays pdo

我有一个从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不是一个好主意(在我看来,为了性能明智)

1 个答案:

答案 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);

[/编辑]

相关问题