• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
db query builder

#1
I have a need to load multiple records into a database.
There is a chance that some of these records might be duplicates (existing primary key).
I want this to be fast and secure (no sql injection etc).

Performing a loop and error checking $this->db->insert('mytable', $data);  is not performant.

Performing $this->db->insert_batch('mytable', $data);  will fail. When I perform a $this->db->error() catch then I capture the first statement that failed in the $data. No clean way to resolve the issue (duplication) and resolve.

Effectively I want 'Insert' statements generated by the query builder to be 'Insert Ignore'.

Options
* I would like to extend the Database component (without hacking / properly)
* Am I missing a $this->db->ignore feature?
* ???

As a hack, I have added to database\DB_query_builder.php with copied functions of public function insert_batch and _insert_batch to create insert_ignore_batch and _insert_ignore_batch where the "return 'INSERT INTO'" has been changed to "return 'INSERT IGNORE INTO'"

Any advise on the best way to approach?

Thanks
Paul
Reply

#2
You broke the CodeIgniter Golden Rule - You never ever edit a System file...
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )
Reply

#3
(09-03-2019, 03:01 AM)InsiteFX Wrote: You broke the CodeIgniter Golden Rule - You never ever edit a System file...
I know..., the only purposely unextendable controller of the lot... the holy grail, the original sin... the shame. Angel
Reply

#4
How many times haven't I been wishing for a way to extend the database classes...
Reply


Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2019 MyBB Group.