我是 Yii 的新手,一切似乎都很好,但问题是,当我使用绑定参数时,比如(DAO stile):
$command = $this->conn->createCommand($sql);
$command->bindColumn("title", "test_title");
$result = $command->query();
或(活动记录):
$row = Movies::model()->find("m_id=:m_id", array(":m_id"=>27));
or
$row = Movies::model()->findByPk(24);
我已经尝试了一切:1)向mysql config添加了一个配置参数。在 main.php - 'enableParamLogging' => true
2) 将字符串从 ' 更改为 " 3) 添加另一个参数以防 mysql 版本 - 'emulatePrepare'=>true
没有什么对我有用。我认为问题出在参数上,但是 bindColumn 方法没有使用它,所以我的假设是 Yii 的某些模块没有包含在配置文件或类似的东西中。
我的模型看起来像这样(在 /models 目录中创建):
class Movies extends CActiveRecord {
public static function model($className = __CLASS__) {
parent::model($className);
}
}
只是为了让大家避免不必要的问题:在 main.php conf 文件中正确配置了数据库,有一个表movies,还有一个 PKs 24 和 27。
除了在 DAO 中使用特殊方法绑定某些参数以及在 AR 中使用 findByPk 或 find 之外,所有本机 SQL 都可以正常工作。我希望这很清楚,伙计们不要用明显的简单技术可能性来打扰我,我可以(正如你所假设的那样)做错了。
PS 另一个有用的信息 - 打电话时
$command->bindColumn("title", "test_title");
FW 抛出异常 - CDbCommand 及其行为没有名为 "bindColumn" 的方法或闭包。所以,如上所述,我认为 Yii 没有看到那些特殊的方法,这是肯定的。我该如何修复它?
好的,为什么这段代码也不起作用?没有例外,只是空白页。
$sql = "SELECT title, year_made FROM movies WHERE year_made=':ym'";
$command = $this->conn->createCommand($sql);
$command->bindParam(":ym", "2012", PDO::PARAM_STR);
$result = $command->query();