我有以下查询
$query="DELETE FROM salesinvoiceitems WHERE invoiceNumber=".$this->put('invoiceNumber');在这里,$this->put('invoiceNumber');总是有“M34\SD”这样的值。由于值中的斜杠,它不像预期的那样工作。
--我研究并发现,mysql_escape_string可以用于这个目的,但根据手册,它现在被废弃了。我在这里最好的选择是什么?
发布于 2013-03-05 09:47:18
activerecord中有一个名为escape的方法,因此您应该:
$invoice = $this->db->escape($yourVar);
$query = "DELETE FROM salesinvoiceitems WHERE invoiceNumber=$invoice";这将在sql注入转义变量时对其进行保护。
发布于 2013-03-05 09:48:37
为什么不使用Codeingiter活动记录呢?举个例子:
$this->db->where('invoiceNumber', $this->put('invoiceNumber'));
$this->db->delete('salesinvoiceitems');摘自Codeigniter文档:
除了简单性之外,使用Active Record特性的一个主要好处是它允许您创建独立于数据库的应用程序,因为查询语法是由每个数据库适配器生成的。它还允许更安全的查询,因为这些值是由系统自动转义的。
发布于 2013-03-05 09:47:25
尝尝这个
$query="DELETE FROM salesinvoiceitems WHERE invoiceNumber=".addslashes($this->put('invoiceNumber'));
https://stackoverflow.com/questions/15220517
复制相似问题