php - mysql_real_escape_string - Escapar consultas SQL en Codeigniter
mysql_real_escape_string codeigniter (2)
Otra forma es utilizar Query Binding que escapa automáticamente a todos los valores:
$sql = "INSERT IGNORE INTO my_table(lat, lng, date, type) VALUES (?,?,?,?);";
$this->db->query($sql, array($data[''lat''], $data[''lng''], $data[''date''], $data[''type'']));
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.
$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?
use $ this-> db-> escape (); escapará de la cadena automáticamente
Esta función determina el tipo de datos para que solo pueda escapar de los datos de cadena. También agrega automáticamente comillas simples alrededor de los datos para que no tenga que:
$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
VALUES (''" . $this->db->escape($data[''lat'']) . "'', ''" . $this->db->escape($data[''lng'']) . "'', ''" . $this->db->escape($data[''date'']$this->db->escape . "'', ''" . $this->db->escape($data[''type'']) . "'')");
Aquí está la referencia Haga clic aquí