Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有特殊字符的查询不';不能在活动记录中工作_Php_Sql Server_Codeigniter_Activerecord_Character Encoding - Fatal编程技术网

Php 带有特殊字符的查询不';不能在活动记录中工作

Php 带有特殊字符的查询不';不能在活动记录中工作,php,sql-server,codeigniter,activerecord,character-encoding,Php,Sql Server,Codeigniter,Activerecord,Character Encoding,我有一个简单的函数,如下所示: function get($name) { //SELECT ID FROM USERS WHERE NAME = $name $this->db->select('ID'); $this->db->limit(1); $this->db->from('USERS'); $this->db->where('NAME', $name); $query = $this->db->g

我有一个简单的函数,如下所示:

function get($name) {

  //SELECT ID FROM USERS WHERE NAME = $name
  $this->db->select('ID');
  $this->db->limit(1);
  $this->db->from('USERS');
  $this->db->where('NAME', $name);

  $query = $this->db->get();

  $row = $query->row();
  return $row->ID;  
}
除了我在
$name
中有特殊字符(例如,Á或Á)之外,一切都正常。在这种情况下,查询不会返回任何行

我使用了
$this->db->last\u query()
直接在SQL控制台上尝试该查询,并返回一个完全有效的查询,返回预期值。对我来说,这意味着查询是可以的,但是Codeigniter和SQL Server之间存在一些编码问题

我已经检查了DB编码配置及其:

$db['odbc']['char_set'] = 'utf8';
$db['odbc']['dbcollat'] = 'utf8_general_ci';
数据库的排序规则为
Modern\u Spanish\u CI\u AS
,名称字段在
数据库默认值中设置


我错过了什么?PHP配置可能有问题?

将数据库排序规则更改为
utf8\u general\u ci

并检查
USERS
表排序规则和
NAME
字段排序规则

 ALTER DATABASE <database_name> COLLATE SQL_Latin1_General_CP1_CI_AS ;

 ALTER TABLE USERS ALTER COLUMN NAME varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS
alterdatabasecollatesql\u Latin1\u General\u CP1\u CI\u AS;
ALTER TABLE USERS ALTER COLUMN NAME varchar(255)将SQL\u Latin1\u General\u CP1\u CI\u整理为
您也可以从management studio进行更改。。它在选项菜单下

尝试使用

$this->db->like('NAME', $name);

在头文件中

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


如果您使用Codeigniter
form_open()
它将生成
您需要使用like而不是where$this->db->like('NAME',$NAME);数据库的排序规则是什么?使用mysql\u real\u escape\u string()数据库和表的排序规则是什么
USERS
&
NAME
field???@devpro我刚刚尝试过,结果相同。找不到该排序规则。它从乌尔都语100直接到乌兹别克语拉丁语。我用的是SQL Server。您可以在问题或标签中看到。对此表示抱歉。。我会给你那些查询,我已经尝试过这些查询,但是它们不起作用。我有很多“不正确的Sintax”错误。很可能是MySQL,让我们来看看。对不起,我已经尝试过“like”方法了。你可以在第一条评论中看到。文件已经有了这个头。无论如何谢谢你