Php 类似Codeigniter的查询不使用搜索字符串

Php 类似Codeigniter的查询不使用搜索字符串,php,codeigniter-2,Php,Codeigniter 2,在我的PHP-Codeigniter函数()中,我给出了以下命令: function get_cust($search='David') { $query = 'select pp.first_name from Cust pp where'; $query .= ' pp.first_name LIKE "%'.escape_like_str($search).'%")'; print_r(mysql_real_escape_string($query)); } 但当我在浏览器中执行输出时

在我的PHP-Codeigniter函数()中,我给出了以下命令:

function get_cust($search='David')
{
$query = 'select pp.first_name from Cust pp where'; 
$query .= ' pp.first_name LIKE "%'.escape_like_str($search).'%")';
print_r(mysql_real_escape_string($query));
}
但当我在浏览器中执行输出时:

select pp.first_name from Cust pp where pp.first_name LIKE 'Úvid%'
不管怎样,我都可以这样得到它:

select pp.first_name from Cust pp where pp.first_name LIKE '%David%'
我尝试过使用
addslashes()
mysql\u real\u escape\u string()
。有人知道如何将
“Úvid%”
更改为
“%David%”

我在本地计算机上使用PHP5.4,因此无法使用
mysqli

您的代码一切正常<代码>%Da是一个

ÚÚ%DAÚCapital U,尖锐的口音


因此,输出数据只是一个问题,在内部,您的查询文本是正确的。尝试另一个字符串作为搜索请求,不要以
Da
开头,或者只执行mysql查询并查看结果。

我建议在Codeigniter中使用查询生成器。你可以找到那个。它将如下所示:

$name = 'David';

$this->db
  ->select('pp.first_name')
  ->like('pp.first_name', $name, 'both')
   >get('Cust');

$search
里面是什么?
像str一样逃逸的代码是什么?@RonnieOosting,“David”在search里面!。你能试试这个吗?sprintf(“从Cust pp中选择pp.first_名称,其中pp.first_名称类似于“%%s%””,mysql_real_escape_字符串($search))“pp.first_名称类似于”。"%" . 像逃走一样逃走($search)。"%" . ' '是的,它适用于所有其他弦!除了“Da”和“De”之外。这是我的问题。我想知道如何让它为“Da”和“De”工作。它会工作的<代码>%Da
仅当您将查询文本输出为html时才会转换为
U
。在内部,您的查询文本被传递到
mysql
,mysql将使用它作为简单文本,而无需将
%Da
转换为
U
。确定。如何摆脱“将查询文本输出为html”?或者找到一种显示正确html格式的方法?不输出查询文本?是的@gazdagergo,我也尝试了“两者”和“之前”。但只有在“之后”起作用!。