2016-02-02 178 views
3

每當我嘗試從我的數據庫的一個表中提取值。在我的查詢,我把特殊字符像(),*,-..etc爲e.g,使用特殊字符如括號(),星號* ..在哪裏條件

Select * from table_name where col_name='Emlysium(infra)' 
or Select * from table_name where col_name='demo & intest' 

如果我使用上面的查詢,那麼這個查詢都無法得到正確的價值觀有用的,他們都出現了,因爲我已經使用特殊字符空值。

**Demo Table** 

id | col_name | col_name2 

1 | Emlysium(infra) | abc 

2 | demo & intest | mno 

3 | jerry.pat  | xyz 

所以你可以建議我一個解決方案,我們可以通過它來比較使用特殊字符的值。 例如。從table_name的地方COL_NAME ='Emlysium(見下文)

********My code 

$site = 'Emlysium(infra)'; 

function get($site) 
{ 
     $this->db->select('*'); 
     $this->db->where(array('running.site'=>$site));        
     $query = $this->db->get('running'); 
     return $query->num_rows(); 
} 
+0

請問您可以添加有問題的數據庫表格內容嗎? @Aurea – AnkiiG

回答

2

你只寫你的查詢中使用Active Record的選擇*。它會自動處理所有轉義字符

$val = "Emlysium(infra)"; 
$this->db->select('subcat_id'); 
$this->db->where('col_name', $val); 
$query = $this->db->get('table_name'); 
2

只是逃避每個特殊字符:

Select * from table_name where col_name='Emlysium\(infra\)' 

OR

爲了得到表測試的行,其中文本= '*()ASDF'

SELECT * FROM test WHERE text = '\*\\\(\)asdf' 

如果您在傳遞參數php:

$qry = "SELECT * FROM test WHERE text = '" . addcslashes('*().;', '*()') . "'"; 

addcslashes (php.net):在charlist參數中列出的字符之前,返回帶反斜槓的字符串。

+0

如果我作爲參數傳遞並將其放入條件? – Aurea

+0

只需使用addcslashes($ sql,'*()'); – Sha7x

+0

不能在我的代碼上面工作.. – Aurea