Sto inserendo alcuni dati in una tabella MySQL utilizzando CodeIgniter. Poiché sto usando INSERT IGNORE INTO
e non voglio modificare la classe di record attiva per abilitare questa funzione, sto generando manualmente la query SQL.Escaping query SQL in Codeigniter
$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')");
Problema: La query fallito quando la stringa in $data['type']
conteneva una sola offerta. Come posso fare in modo che questi caratteri che devono essere sfuggiti vengano scappati automaticamente, come quando si usano i record attivi?
È possibile semplificare ulteriormente la procedura: '$ this-> db-> query ($ sql, $ data);' Questo funziona per me! (Immagino che non dovresti avere altre chiavi nell'array di dati perché funzioni) – Saneem
Oppure riscrivilo su Active Record Pattern: '$ this-> db-> inset ('some_table', $ data);' molto di più dritto in avanti e molto facile. Assicurati solo che nessun campo della chiave primaria di auto-incremento lo faccia nel metodo 'insert()' usando 'if (! Isset ($ data ['id'])) getti nuovo {InvalidArgumentException ('data [id] non è permesso per l'inserto '); } ' – Roland