Estoy insertando algunos datos en una tabla MySQL usando CodeIgniter. Debido a que estoy usando INSERT IGNORE INTO
y no quiero editar la clase de registros activos para habilitar esta característica, estoy generando la consulta SQL manualmente.Escapar consultas SQL en Codeigniter
$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')");
Problema: La consulta falló cuando la cadena en $data['type']
contenía una comilla simple. ¿Cómo puedo hacer que estos caracteres que necesitan ser escapados se escapen automáticamente, como cuando se usan registros activos?
Puede hacer esto aún más simple: '$ this-> db-> query ($ sql, $ data);' ¡Esto funciona para mí! (Supongo que no deberías tener ninguna otra clave en la matriz de datos para que funcione) – Saneem
O rescríbete a Patrón de registro activo: '$ this-> db-> inset ('some_table', $ data);' mucho más sencillo y muy fácil. Solo asegúrese de que ningún campo de clave principal de autoincremento lo convierte en el método 'insert()' usando 'if (! Isset ($ data ['id'])) throw new {InvalidArgumentException ('data [id] no está permitido) para insertar '); } ' – Roland