query mysql_real_escape_string mostrar injection example escape error php mysql codeigniter activerecord

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í