No matter how hard you try. If queries are dynamically created, you (or your lib's user) will most certainly miss a spot were an attacker cloud sneak an offensive query.
You fixed the $i, but what about $table? What about $conditions's keys?
See the problem? And we are just talking about a single method ;-)