在where条件中使用括号(),星号* ..等特殊字符

时间:2016-02-02 09:45:20

标签: php mysql codeigniter

每当我尝试从数据库的一个表中获取值时。在我的查询中,我将(),*,-..etc之类的特殊字符用于例如

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(infra)

********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();
}

2 个答案:

答案 0 :(得分:2)

您只需编写查询使用活动记录。它会自动处理所有转义字符

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

答案 1 :(得分:2)

逃避每个特殊角色:

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

OR

获取表格测试的行,其中text =' *()asdf'

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

如果你在php中传递参数:

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

addcslashes (php.net):返回带有反斜杠的字符串,该字符串在charlist参数中列出。