在 Codeigniter 中转义 SQL 查询


Escaping SQL queries in Codeigniter

我正在使用CodeIgniter将一些数据插入MySQL表中。由于我使用的是INSERT IGNORE INTO并且不想编辑活动记录类以启用此功能,因此我正在手动生成 SQL 查询。

$this->db->query("INSERT IGNORE INTO my_table(lat, lng, date, type)
                        VALUES ('" . $data['lat'] . "', '" . $data['lng'] . "', '" . $data['date'] . "', '" . $data['type'] . "')");

问题:$data['type'] 中的字符串包含单引号时,查询失败。如何使这些需要转义的字符自动转义,就像使用活动记录时一样?

另一种方法是使用自动转义所有值的查询绑定:

$sql = "INSERT IGNORE INTO my_table(lat, lng, date, type) VALUES (?,?,?,?);"; 
$this->db->query($sql, array($data['lat'], $data['lng'], $data['date'], $data['type']));

使用 $this->db->escape(); 它将自动转义字符串

此函数确定数据类型,以便它只能进行转义 字符串数据。它还会自动在数据周围添加单引号 因此,您不必:

$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']) . "')");

这是参考 点击这里