1

嗨,我在 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
)

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

4

3 回答 3

2

Insert并且Columns应该使用一次,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);
于 2013-05-23T09:51:19.867 回答
0

创建数据库对象 $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();

                }

    }
于 2013-05-23T09:54:57.527 回答
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

于 2013-05-23T03:12:20.567 回答