Php 使用特殊字符,如括号(),星号*。。在什么情况下

Php 使用特殊字符,如括号(),星号*。。在什么情况下,php,mysql,codeigniter,Php,Mysql,Codeigniter,每当我试图从数据库的一个表中获取值时。在我的查询中,我为例如 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

每当我试图从数据库的一个表中获取值时。在我的查询中,我为例如

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
那么,你能给我一个解决方案吗?我们可以用特殊字符来比较数值。 例如,从表名中选择*,其中col\u name='emlyium(infra)


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

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

只需避开每个特殊角色:

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

获取test表的行,其中text='*()asdf'

如果在php中传递参数:

$qry = "SELECT * FROM test WHERE text = '" . addcslashes('*().;', '*()') . "'";
:返回在charlist参数中列出的字符之前带有反斜杠的字符串


请添加有问题的数据库表内容好吗@如果我作为参数传递并放入where条件,只需使用addcslashes($sql,“*()”);
SELECT * FROM test WHERE text = '\*\\\(\)asdf'
$qry = "SELECT * FROM test WHERE text = '" . addcslashes('*().;', '*()') . "'";