Php CDbCommand返回错误的结果

Php CDbCommand返回错误的结果,php,mysql,yii,Php,Mysql,Yii,我正在经历Yii的怪异行为。由于某些原因,此代码无法正常工作: $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(...); $stm

我正在经历Yii的怪异行为。由于某些原因,此代码无法正常工作:

$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);
下面是数据库结构和数据:

--
-- 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');

这两个连接到完全相同的数据库和表,具有完全相同的凭据。为什么我会得到不同的结果?

这并不能回答最初的问题,为什么它会这样工作,但显然,使用Yii查询生成器可以避免这种行为。以片段方式构建同一查询的效果与预期相同


在有人提供解释之前,我会将此标记为正确答案。

有人知道发生了什么吗?我遇到了同样的问题。但仍在寻找发生了什么。
--
-- 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');