Я ищу поле в таблице SQL Server 2005. Я использую что-то вроде
$query = "select * from TableName where replace ( replace ( client , 'é' ,'e' ) , 'ç' ,'c' ) COLLATE French_CI_AI = 'Agence française du texte agréable'";
Я могу попросить таблицу получить имя без предложения «где», но я не могу спросить, если я использую это конкретное имя «Agence française du texte agréable» в предложении where.
Все остальные имена работают, поэтому я предполагаю, что проблема связана с символом «ç» или «é».
спасибо за помощь !
------------- РЕДАКТИРОВАТЬ --------------
спасибо за ваш ответ. Я сделал еще один тест, удалив ç и é, например, «Agence francaise du texte agreable».
И я до сих пор не могу получить информацию! Итак, наконец, где моя проблема? ... Я также протестировал $query = "select * from Table where client = 'Agence francaise du texte agreable'";
и var_dump возвращает ресурс (4, оператор SQL Server)
и var_dump fetch_array возвращает 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);
Спасибо за вашу помощь!
'é' = 'e'
бытьtrue
. по какой причине вы пытаетесь УДАЛИТЬ акцентированные символы из поляclient
, а затем сравнить со строкой, содержащей те самые символы, которые вы только что удалили? уберите это яблоко и замените его апельсином. Эй, почему это больше не яблоко? - person Marc B   schedule 23.03.2016