Используя php и odbc соединение, не получая результат от SQL с é в запросе? - PullRequest
0 голосов
/ 06 марта 2012

Я запрашиваю php-страницу из базы данных SQL следующим образом:

$virtual_dsn = 'DRIVER={SQL Server};SERVER=myserver;DATABASE=mydatabase';
$connection = odbc_connect($virtual_dsn,user,pass) or die('ODBC Error:: '.odbc_error().' :: '.odbc_errormsg().' :: '.$virtual_dsn);
odbc_exec($connection,mydatabase);

$query = "SELECT * FROM mytable WHERE myfield = 'Séjourné'";
$result = odbc_exec($connection, $query);

Я знаю, что в таблице есть строки, которые должны соответствовать этому запросу, но они не возвращаются. Я сузил проблему до символа «é»; то есть запросы без этого символа возвращаются, как и ожидалось, но я не могу запрашивать записи, содержащие "é". Я подозреваю, что проблема связана с кодированием символов. Я надеялся, что есть какой-то способ указать, какой набор символов должен использоваться для моего соединения ODBC или запроса. Если есть, я не могу его найти.

Что мне не хватает. Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Пожалуйста, сделайте это:

create table test1 (
title text)
default charset = utf8, default collate = utf8_general_ci;
insert into test1 values ('tèst');
insert into test1 values ('tèst');
insert into test1 values ('tèst');
insert into test1 values ('tèst');
insert into test1 values ('tèst');
insert into test1 values ('test');
insert into test1 values ('test');
insert into test1 values ('test');
insert into test1 values ('test');

и выполните следующие запросы:

SELECT * FROM test1 WHERE title = 'tèst'
SELECT * FROM test1 WHERE title = 'test'

Каковы ваши результаты? Для меня в обоих случаях возвращают все записи.

LE:

odbc_exec($connection, "SET NAMES 'UTF8'");
odbc_exec($connection, "SET client_encoding='UTF-8'");

или utf8_general_ci

Необходимо, чтобы результаты были разными в зависимости от символа?

0 голосов
/ 06 марта 2012

Отсутствует квута. Я переписываю вашу строку.

$query = "SELECT * FROM mytable WHERE myfield = 'Séjourné'";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...