Welcome Guest, Not a member yet? Register   Sign In
Message: array_keys() and query on db
#1

[eluser]skunkio[/eluser]
Hi all,
I'm new on CI and I wrote some code to execute a query on my db.
My code is like follow

My_Controller
Code:
class MY_Controller extends CI_Controller
{
   var $data;
   var $header_data;
var $topmenu_data;
var $leftmenu_data;
var $rightmenu_data;
   var $middle_data;
var $footer_data;

function __construct($props = array())
{
  parent::__construct($props);
  $this->data   = array();
  $this->header_data = array();
  $this->topmenu_data = array();
  $this->leftmenu_data= array();
  $this->rightmenu_data= array();
    $this->middle_data = array();
  $this->footer_data = array();
  $this->errorbox_data= array();
}
}

My controller
Code:
class Groups extends My_Controller {

    function __construct()
    {
  parent::__construct();
  $this->load->model('model_group');
  $this->load->model('model_post_comment');
  $this->load->model('model_event');
}

    function create_group()
    {
        $userId = 100;
        $groupName = "TEST";
        
        $data = array('user_id' => $userId,
        'group_name' => $groupName,
        'db_add_date' => date('Y-m-d H:i:s'),
        'db_update_date' => date('Y-m-d H:i:s')
       );

        $r = $this->model_group->group_saveusers($data);
    
        $array=array(
                     "result"=>$r
      );
        
echo json_encode($array);
    }
}

My model
Code:
class Model_group extends CI_Model {
    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function group_saveusers($group_data)
    {
$this->db->insert_batch('mio_user_group_master',$group_data);
  
if($this->db->affected_rows()>0){
  $group_id = $this->db->insert_id();
}
      
return $group_id;
    }
}

Invoking the url below

Quote:http://mydomain/groups/create_group/

I receive the error below

Quote:A PHP Error was encountered
Severity: Warning
Message: array_keys() [function.array-keys]: The first argument should be an array
Filename: database/DB_active_rec.php
Line Number: 1109

Am I missing something?

Thanks
#2

[eluser]skunkio[/eluser]
Found the issue, insert_batch() requires an array of array. I have changed my function using insert()
#3

[eluser]CroNiX[/eluser]
That can produce a very large amount of queries, depending on what you are doing. It would probably be better to take each one and put it in an array and run the batch all at once in a single query.
Code:
$insert = array();
foreach ($groupdata as $data)
{
    $insert[] = $data;
}
$this->db->insert_batch('mio_user_group_master', $insert);




Theme © iAndrew 2016 - Forum software by © MyBB