Php foreach数据插入

时间:2013-05-23 03:00:59

标签: php mysql joomla

嗨,我有一个关于Joomla + php + Mysql的应用程序。数组传入函数,它将被插入到mysql数据库中。以下是我的代码。

public function setItems($params,$type)
{
$search_id = 1;
$query = $db->getQuery( true );
$columns = array('query_type','query_name','search_id');
foreach($params['banks'] as $key=>$value){
            $values = array($db->quote('bank'), $db->quote($value), $db->quote($search_id));
            $query->insert($db->quoteName('#__bank_parameters'))
              ->columns($db->quoteName($columns))
              ->values(implode(',',$values));
             $db->setQuery($query);
             $db->query();

        }

}

params的输出如下:

Array
(
    [0] => bank1
    [1] => bank2
)

现在的问题是,我只收到一个数据插入,而不是上面的参数如何插入。这里可能缺少什么?谢谢

3 个答案:

答案 0 :(得分:2)

InsertColumns应该使用一次,Values多次:

// Create the base insert statement.
$query
   ->clear()
   ->insert(    $db->qn('#__bank_parameters'))
   ->columns(   array('query_type', 'query_name', 'search_id'))
;

foreach ($params['banks'] as $key => $value)
{
    $query->values(implode(', ', $db->q(array('bank', $value, $search_id))))
}

// Set the query and execute the insert.
$db->setQuery($query);

答案 1 :(得分:0)

找到解决上述问题的方法。

foreach($params['banks'] as $key=>$value){
            $query = $db->getQuery( true );
            $columns = array('query_type','query_name','search_id');
            $values = array($db->quote('bank'), $db->quote($value), $db->quote($search_id));
            $query->insert($db->quoteName('#__bank_parameters'))
              ->columns($db->quoteName($columns))
              ->values(implode(',',$values));
             $db->setQuery($query);
             $db->query();

        }

感谢Orangepill

答案 2 :(得分:0)

创建db $ db = JFactory :: getDbo();

的对象
  public function setItems($params,$type)
        {
        $search_id = 1;
        $db = JFactory::getDbo();
        $query = $db->getQuery( true );
        $columns = array('query_type','query_name','search_id');
        foreach($params['banks'] as $key=>$value){
                    $values = array($db->quote('bank'), $db->quote($value), $db->quote($search_id));
                    $query->insert($db->quoteName('#__bank_parameters'))
                      ->columns($db->quoteName($columns))
                      ->values(implode(',',$values));
                     $db->setQuery($query);
                     $db->query();

                }

    }