私は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)mysqlconfigにconfigparamを追加しました。main.phpで-'enableParamLogging'=>true
2)文字列を'から "に変更しました3)mysqlバージョンの場合に備えて別のパラメータを追加しました-' emulatePrepare'=> true
私には何もうまくいきません。問題はparamsにあると思いましたが、bindColumnメソッドはそれを使用しないので、Yiiの一部のモジュールが構成ファイルなどに含まれていないと推測されます。
私のモデルは次のようになります(/ models dirで作成):
class Movies extends CActiveRecord {
public static function model($className = __CLASS__) {
parent::model($className);
}
}
誰もが不必要な質問を避けるためだけに:データベースはmain.php confファイルで適切に構成されており、テーブルムービーがあり、PK24と27もあります。
DAOでいくつかのパラメータをバインドするための特別なメソッドを使用する場合と、ARでfindByPkまたはfindを使用する場合を除いて、すべてのネイティブSQLは正常に機能します。私はこれが明確であることを願っています、私が(Uが推測するように)間違ったことをすることができるという明白な単純な技術的可能性で私を悩ませないでください。
PSもう1つの役立つ情報-電話するとき
$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();