首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确认SQLbuilder查询在Yii中成功

确认SQLbuilder查询在Yii中成功
EN

Stack Overflow用户
提问于 2013-08-02 15:01:42
回答 1查看 956关注 0票数 0

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

对于如何正确处理Yii中的SQL语句,我提出了一个问题。我会做一个小的例子代码。

代码语言:javascript
复制
    public function actionCreate($id) {


    $cmd = Yii::app()->db->createCommand();
    $cmd->insert('table_1',array(
    'user_id'=> (int) $id,
    ),'id=:id', array(':id'=>$id)); 
}

确认此查询是否有效的正确方法是什么?它是尝试/捕捉块吗?

我问这个问题的原因是,如果它传递了一个糟糕的参数,它可能会失败,但是在两个表上,我有一些DB约束,这些约束也可能导致失败,所以我想确保正确地处理所有事情,而不是毛毯地处理它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-02 15:42:54

从正式文件

  1. 一旦建立了数据库连接,就可以使用CDbCommand执行SQL语句。通过使用指定的SQL语句调用CDbConnection::createCommand()创建一个CDbCommand实例:
代码语言:javascript
复制
$connection=Yii::app()->db;   // assuming you have configured a "db" connection
// If not, you may explicitly create a connection:
// $connection=new CDbConnection($dsn,$username,$password);
$command=$connection->createCommand($sql);
// if needed, the SQL statement may be updated as follows:
// $command->text=$newSQL;

通过CDbCommand以下列两种方式之一执行SQL语句:

它就在这里

execute():执行非查询SQL语句,例如INSERT、UPDATE和DELETE。如果成功,则返回受执行影响的行数。

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

通过Yii,您可以自动获得table_1的模型,并从中查找、插入、更新、删除。示例:

代码语言:javascript
复制
$model = new Table1ModelName;
$model->user_id= $id;
$model->name= $user_name;
...
$model->save();

关于Yii工作记录,仍然有许多变通方法和有趣的东西要研究。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18020169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档