我正在SQL server 2005表中搜索一个字段。我正在使用像
这样的东西$query = "select * from TableName where replace ( replace ( client , 'é' ,'e' ) , 'ç' ,'c' ) COLLATE French_CI_AI = 'Agence française du texte agréable'";
我可以要求表格获取没有'where'子句的名称,但我不能问我是否在where子句中使用这个特定名称'Agencefrançaisedutexteagréable'
其他每个名字都在运作,所以我认为这个问题与'ç'或'é'字符有关
谢谢你的帮助!
-------------编辑--------------
谢谢你的回复。我已经通过删除ç和é进行了另一项测试,例如'Agence francaise du texte agreable'我仍然无法获得这些信息!那么最后我的问题在哪里? ...我还测试了$ query =“select * from Table where client ='Agence francaise du texte agreable'”;
并且var_dump返回资源(4,SQL Server语句)
和fetch_array的var_dump返回null
我不明白......它与其他名字一起使用:(
----------编辑2 --------------
发现我的问题来自于我只有一个结果,而我的代码不起作用。 然后用
更改了我的代码$query = "select * from Table where client COLLATE French_CI_AI = 'Agence française du texte agréable'";
// SQLSrv_num_rows requires a static or keyset cursor.
if (strncmp(ltrim(strtoupper($query)), 'SELECT', strlen('SELECT')) == 0)
{
$array = array('Scrollable' => SQLSRV_CURSOR_KEYSET);
}
else
{
$array = array();
}
$cursor = sqlsrv_query($db, $query, array(), $array);
$row = sqlsrv_fetch_array($cursor, SQLSRV_FETCH_NUMERIC);
谢谢大家的帮助!
答案 0 :(得分:0)
我认为你根本不需要删除特殊字符(即:replace())为什么不只是这样做:
$query = "select * from TableName COLLATE French_CI_AI = 'Agence française du texte agréable'";
然后,如果你真的想删除法语字符,无论出于何种原因:
$ result = str_replace(“é”,“e”,str_replace(“ç”,“c”$ result);
通过这种方式,您仍然可以替换法语字符而不会弄乱您的查询。