从Joomla中的结果集生成insert语句

时间:2012-11-13 19:01:08

标签: mysql joomla

在Joomla 2.5和3.0中,我能够将数据库结果集作为数组。是否可以将此数组转换为sql insert语句或.sql文件,以便可以使用相同的数据插入另一个数据库中相同结构的另一个表中?

1 个答案:

答案 0 :(得分:0)

是的,你可以,检查下面的代码。您可以使用Joomla核心功能来完成此任务。

首先初始化数据集如下。

function initializesData()
    {
        $this->_data->id        = 0;
        $this->_data->field1    = '';        
        $this->_data->field2    = '';
        $this->_data->field3    = 1;

        return $this->_data;
    }

然后将行加载到数据集中,如下所示。

function &getOne($id='')
    {
        $db =& JFactory::getDBO();       
        $query  = $db->getQuery(true);
        $query->select('*');
        $query->from($db->nameQuote(TABLE_PREFIX.'table_name'));
        $query->where($db->nameQuote('id').'='.$db->Quote($id));       
        $db->setQuery($query);      
        $this->_data = $db->loadObject();

        if ($this->_data)
        {      
            return $this->_data;
        }

    }

然后使用Joomla表插入行。

 function store()
    {  
       //Get post data 
       $this->_data = $this->getOne($id);


       $row = &$this->getTable('table_name');


       if (!$row->bind($this->_data))
       {
          $this->setError($this->_db->getErrorMsg());          
          return false;
       } 


       if (!$row->check())
       {         
         $this->setError($this->_db->getErrorMsg());
         return false;
       } 


       if (!$row->store())
       {
         $this->setError($this->_db->getErrorMsg());
         return false;
       }      
       $new_id = $this->_db->insertId();

       if($new_id > 0)
            $this->_data->id = $new_id;

       return true;
    }

以上所有功能都在模型中。希望您可以在控制器中管理函数调用。如果你想做多个插入循环函数调用。如果您有任何问题,请告诉我