與UTF8科協工作我們有一個查詢是這樣的:ADODB功能不會MySQL查詢
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的定製版本,有一個在AdoDB_RecordSet類稱爲LoadFromRawQuery方法,但可以使用標準的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字符集。
幫助。