确认SQLbuilder查询在Yii中成功

确认SQLbuilder查询在Yii中成功,yii,query-builder,Yii,Query Builder,首先,如果这是一个非常愚蠢的问题,我道歉 我有一个关于在Yii中正确处理SQL语句的问题。我将制作一个小的示例代码 public function actionCreate($id) { $cmd = Yii::app()->db->createCommand(); $cmd->insert('table_1',array( 'user_id'=> (int) $id, ),'id=:id', array(':id'=>$

首先,如果这是一个非常愚蠢的问题,我道歉

我有一个关于在Yii中正确处理SQL语句的问题。我将制作一个小的示例代码

    public function actionCreate($id) {


    $cmd = Yii::app()->db->createCommand();
    $cmd->insert('table_1',array(
    'user_id'=> (int) $id,
    ),'id=:id', array(':id'=>$id)); 
}
确认此查询有效的正确方法是什么?是试块还是抓块

我问的原因是,如果传递了一个错误的参数,它可能会失败,但在一些表上,我有DB约束,这也可能导致失败,因此我想尝试确保我正确处理了所有问题,而不是全面处理它们。

来自官方文档

  • 执行SQL语句建立数据库连接后,可以使用CDbCommand执行SQL语句。一个 通过调用创建CDbCommand实例 具有指定SQL语句的CDbConnection::createCommand():
  • SQL语句通过CDbCommand以以下两种方式之一执行:

    在这里

    execute():执行非查询SQL语句,例如INSERT、UPDATE 并删除。如果成功,它将返回要删除的行数 受处决的影响

    顺便说一句,insert()是活动记录(AR)在内部使用的低级方法。你为什么不干脆用AR来代替呢

    通过Yii-gii,您可以自动获得表1的模型,并且可以从中查找、插入、更新和删除。例如:

    $model = new Table1ModelName;
    $model->user_id= $id;
    $model->name= $user_name;
    ...
    $model->save();
    
    还有很多变通方法和有趣的事情你想研究一下

    谢谢Telvin,我更关心的是如何正确处理错误,例如由于某种原因导致的查询失败。我想我也可以用AR。示例代码只是一个示例。您可以使用try-catch-try{Yii::app()->db->createCommand($command)->execute();}catch(cdbeexception$e){}谢谢,这就是我要确认的。
    $model = new Table1ModelName;
    $model->user_id= $id;
    $model->name= $user_name;
    ...
    $model->save();