0

Joomla 2.5 および 3.0 では、データベースの結果セットを配列として取得できます。この配列を sql insert ステートメントまたは .sql ファイルとして変換して、別のデータベースの同じ構造の別のテーブルに挿入するために同じものを使用できるようにすることは可能ですか?

4

1 に答える 1

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;
    }

上記の機能はすべてモデル内にあります。コントローラーで関数呼び出しを管理できることを願っています。複数の挿入を行いたい場合は、関数呼び出しをループします。問題がある場合はお知らせください

于 2012-11-14T06:21:30.673 に答える