doumou3883 2013-06-05 14:46
浏览 39

Yii中的SQL查询

I'm constructing a Data Access Object within a project utilizing the Yii framework. One of the insert queries is relatively complicated as it is spread out over three related tables.

At this time, I have the SQL queries written out, and am not using QueryBuilder.

At the beginning of the insert function, I have

$connection = Yii::app()->db;
$transaction = $connection->beginTransaction();

try {
  $command = $connection->createCommand($this->insertQuestion);

  //multiple $command->bindParam() calls

According to the documentation, a CDbCommand instance can be reused to build multiple queries. However, CdbCommand::reset must be called when reusing for a new query.

This only appears within the QueryBuilder portion of the documentation. As I'm using CdbCommand::bindParam to bind variables to the query without using QueryBuilder, is it necessary for me to do

$command->reset();
$command->setText($sqlText);
$command->bindParam("sqlVar", $variable, PDO::PARAM_INT);

Is it possible to skip using CDbCommand::reset in this situation?

  • 写回答

1条回答 默认 最新

  • douxian9060 2013-06-08 03:23
    关注

    According to the documentation you can do something like:

    $transaction=$connection->beginTransaction();
    try
    {
       $connection->createCommand($sql1)->execute();
       $connection->createCommand($sql2)->execute();
       //.... other SQL executions
       $transaction->commit();
    }
    catch(Exception $e)
    {
       $transaction->rollback();
    }
    

    If you know the SQL you want to use, just use that for $sql1, $sql2, and $sql3.

    评论

报告相同问题?

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本