簡體   English   中英

比較活動記錄代碼初始化器中的值時,在where子句中使用斜杠

[英]Using slashes in the where clause while comparing values in active record codeigniter

我有以下查詢

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

這里$this->put('invoiceNumber'); 始終具有“ M \\ 34 \\ SD”之類的值。 由於值的斜線無法正常工作。

我研究后發現mysql_escape_string可用於此目的,但現在已按照手冊棄用了它。 那么,我最好的選擇是什么?

為什么不改用Codeingiter Active Record? 一個例子:

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

取自Codeigniter文檔:

除了簡單之外,使用Active Record功能的主要好處是它允許您創建獨立於數據庫的應用程序,因為查詢語法是由每個數據庫適配器生成的。 它還允許更安全的查詢,因為這些值會由系統自動轉義。

活動記錄中有一個方法稱為escape ,所以您應該:

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

這將防止sql注入,因為它逃脫了var。

嘗試這個

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

嘗試帶斜線

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM