I want to implement a sql query using CodeIgniter Active Record class. The query looks like this..
INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
Is this possible in CodeIgniter without using the $this->db->query method?
Solution:
$this->db->select('au_id, au_lname, au_fname');
$this->db->from('california_authors');
$this->db->where('state', 'CA');
$query = $this->db->get();
if($query->num_rows()) {
$new_author = $query->result_array();
foreach ($new_author as $row => $author) {
$this->db->insert("authors", $author);
}
}
Regards
I think you are talking about a a SELECT ... INSERT query, on the active record class there is not a method to do that, but there are two ways to do it
1)
$query = $this->db->query('INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = \'CA\'');
As you say
And 2) you can can do this, using what Calle said,
$select = $this->db->select('au_id, au_lname, au_fname')->where('state', 'CA')>get('california_authors');
if($select->num_rows())
{
$insert = $this->db->insert('california_authors', $select->result_array());
}
else
{ /* there is nothing to insert */
if you want to have good control on query execution then you could do your SELECT ... INSERT in 3 ways:
1)use codeigniter active record insert_batch(ci3) or insertBatch(ci4)(recomended):
$select = $this->db->select('au_id, au_lname, au_fname')->where('state','CA')>get('california_authors');
if($select->num_rows())
{
$insert = $this->db->insert_batch('california_authors', $select->result_array());
}
else
{ /* there is nothing to insert */}
2)use codeigniter active record simple insert:
$select = $this->db->select('au_id, au_lname, au_fname')->where('state','CA')>get('california_authors');
if($select->num_rows())
{
foreach($select->result_array() as $row)
$this->db->insert('california_authors', $row);
}
else
{ /* there is nothing to insert */}
3)use codeigniter active record query execution:
$query = $this->db->query('INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = \'CA\'');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With