[英]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']
中的字符串包含单引号时查询失败。 如何使这些需要转义的字符自动转义,就像使用Active记录一样?
另一种方法是使用Query Binding自动转义所有值:
$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']) . "')");
这是参考点击这里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.