2013-11-09 5 views
-1

Я испытываю странное поведение от Yii. По какой-то причине этот код не работает, как ожидалось:CDbCommand возвращает неверные результаты

$sql = "SELECT id, class_id, lang FROM tbl_top_class WHERE class_name = :string"; 
$cmd = Yii::app()->db->createCommand($sql); 
$data[':string'] = "sad"; 
$result = $cmd->queryAll($data); 
$db = new PDO(...); 
$stmt = $db->prepare($sql); 
$stmt->execute($data); 
$result2 = $stmt->fetchAll(); 
print_r($result); 
echo "<br>"; 
print_r($result2); 

Я бы ожидать, что $result и $result2 идентичны, но они не являются. Это то, что выводит сценарий:

Array ([0] => Array ([id] => 1 [class_id] => 0 [lang] => en-us)) 
Array () 

А вот структуру БД & данные:

-- 
-- Table structure for table `tbl_top_class` 
-- 

CREATE TABLE `tbl_top_class` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    `lang` varchar(5) NOT NULL, 
    `class_name` varchar(100) NOT NULL, 
    `class_id` bigint(20) unsigned NOT NULL, 
    `description` text, 
    PRIMARY KEY (`id`), 
    KEY `lang` (`lang`), 
    KEY `class_name` (`class_name`), 
    KEY `class_id` (`class_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

-- 
-- Dumping data for table `tbl_top_class` 
-- 

INSERT INTO `tbl_top_class` (`id`, `lang`, `class_name`, `class_id`, `description`) VALUES 
(1, 'en-us', 'discard', 0, 'Non-classifiable'); 

оба соединения к той же самой БД и таблицы, с точно такими же учетными данными. Почему у меня разные результаты?

+0

Неужели кто-нибудь знает, что происходит? – tinybyte

+0

У меня такая же проблема. Но все еще нахожу, что происходит. – Magic

ответ

0

Это не отвечает на исходный вопрос ПОЧЕМУ он работает так, но, по-видимому, это поведение можно обойти, используя построитель запросов Yii. Построение одного и того же запроса по частям работает так, как ожидалось.

Я отмечу это как правильный ответ, пока кто-нибудь не сможет дать объяснение.

Смежные вопросы