使用PHP的SQL Server查询 - 法语

时间:2016-03-23 15:04:33

标签: php sqlsrv

我正在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);

谢谢大家的帮助!

1 个答案:

答案 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);

通过这种方式,您仍然可以替换法语字符而不会弄乱您的查询。