我正在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子句中使用这个特定名称"Agence française du texte agréable",我就不能问它
其他所有名称都在起作用,所以我认为问题与字符的"ç"或"é"有关
谢谢你的帮助!
-------------编辑---------------
谢谢你的安慰。我做了另一个测试,删除了çandé,就像这个"Agence francaise du texte agreable"
我仍然无法获取信息!最后我的问题在哪里。。。我还测试了$query="select*from Table where client=‘Agence francise du texte agreable’";
var_dump返回资源(4,SQL Server语句)
和fetch_array的var_dump,返回空
我不明白。。。它与其他名称配合使用:(
----------编辑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);
感谢大家的帮助!
我认为你根本不需要删除特殊字符(即:replace()),为什么不直接删除:
$query = "select * from TableName COLLATE French_CI_AI = 'Agence française du texte agréable'";
如果你真的想删除法语字符,无论出于什么原因:
$result=str_replace("é","e",str_replace("ç","c"$result);
这样,您仍然可以替换法语字符,而不会打乱查询。