У нас есть запрос, как это:функция ADOdb не работает с utf8 броском в MySQL Query
select C.* from stream_data AS sd
JOIN Conversations AS C
ON (C.conversationReferenceId = sd.stream_data_id AND smAccountId = ?)
WHERE sd.stream_id = ? LIMIT 1
и мы запустить ее с помощью ADOdb. как это:
$object = new Conversation();
$object->LoadFromRawQuery("select C.* from stream_data AS sd JOIN Conversations AS C ON (C.conversationReferenceId = sd.stream_data_id AND smAccountId = ?) WHERE sd.stream_id = ? LIMIT 1", array($socialmediaAccountId, $parentSourceId));
(Примечание: Мы имеем собственную версию ADOdb, который имеет метод, называемый LoadFromRawQuery в классе AdoDB_RecordSet, но проблему можно увидеть, используя стандартный Execute() метод вызова, поэтому я позволяю его . быть)
Чтобы улучшить производительность запроса (на основе наших индексов), мы добавили оператор приведения:
#Query:
select C.* from stream_data AS sd
JOIN Conversations AS C
ON (C.conversationReferenceId = cast(sd.stream_data_id as char) collate utf8_unicode_ci AND smAccountId = ?)
WHERE sd.stream_id = ? LIMIT 1
#PHP
$object = new Conversation();
$object->LoadFromRawQuery("select C.* from stream_data AS sd JOIN Conversations AS C ON (C.conversationReferenceId = cast(sd.stream_data_id as char) collate utf8_unicode_ci AND smAccountId = ?) WHERE sd.stream_id = ? LIMIT 1", array($socialmediaAccountId, $parentSourceId));
Обе операции работают в консоли, но в ADOdb, то первая операция прошла успешно, в то время как вторая операция не выполняется. Все наши таблицы находятся в кодировке UTF8.
Помощь.