2013-03-05 77 views
0

我有以下查询在where子句中使用斜线,而在活动记录比较笨值

$query="DELETE FROM salesinvoiceitems WHERE invoiceNumber=".$this->put('invoiceNumber'); 

这里$this->put('invoiceNumber');总是有一个像“M \ 34 \ SD”的价值观。由于值的斜线不符合预期。

我研究发现mysql_escape_string可以用于此目的,但现在按照手册使用它。那么我最好的选择是什么?

回答

0

有一个名为escape ActiveRecord的方法,所以你应该:

$invoice = $this->db->escape($yourVar); 
$query = "DELETE FROM salesinvoiceitems WHERE invoiceNumber=$invoice"; 

这将防止SQL注入,因为它逃脱变种。

0

试试这个

$query="DELETE FROM salesinvoiceitems WHERE invoiceNumber=".addslashes($this->put('invoiceNumber'));

0

尝试带斜杠

$query="DELETE FROM salesinvoiceitems WHERE invoiceNumber='".($this->put('invoiceNumber')). "'"; 
1

为什么不使用Codeingiter活动记录呢?举个例子:

$this->db->where('invoiceNumber', $this->put('invoiceNumber')); 
$this->db->delete('salesinvoiceitems'); 

从笨资料为准:

超越简单,使用Active Record的一个主要好处功能 是,它允许因为查询语法您创建数据库独立的应用, 由每个数据库适配器生成。它也 允许更安全的查询,因为系统自动将值转换为 。