【问题标题】:Yii CDbCommand methods not applyingYii CDbCommand 方法不适用
【发布时间】:2014-05-28 23:34:52
【问题描述】:

我有以下在 Yii 中创建 CDbCommand 的代码:

$cmd = Yii::app()->db->createCommand(array(
    'select'=>'CMUM, CPRO, CUN, DMUN50',
    'from'=>'PROVINCIAS',
    'where'=>'CPRO = :CPRO'
));
$cmd->bindParam(":CPRO", $CPRO, PDO::PARAM_STR);

$cmd->setLimit(2);

这应该将查询结果限制为 2 行,但我得到了所有可用的行。为什么?

问候

【问题讨论】:

  • 将 $command->bindParam 更改为 $cmd->bindParam 并尝试
  • @ramamoorthy_villi 哎呀,这是复制/粘贴错字,抱歉

标签: php sql yii


【解决方案1】:

您应该在绑定参数之前设置限制。因为当您绑定参数时,它会在内部准备 PDO 语句。所以你不能在那之后设置限制。

$cmd = Yii::app()->db->createCommand(array(
    'select'=>'CMUM, CPRO, CUN, DMUN50',
    'from'=>'PROVINCIAS',
    'where'=>'CPRO = :CPRO'
));
$cmd->setLimit(2);
$cmd->bindParam(":CPRO", $CPRO, PDO::PARAM_STR);

【讨论】:

  • 还有一件事。如何获取将被替换的变量发送到服务器的查询? (getText 返回占位符而不是实际值)
  • PDO 查询记录并不容易。您应该启用 Yii 日志并查看正在执行的查询。 larryullman.com/2013/09/23/debugging-database-operations-in-yii。 (可选)您可以查看 mysql 日志
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多