0

首先,如果这是一个非常愚蠢的问题,我深表歉意。

我有一个关于在 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)); 
}

确认此查询有效的正确方法是什么?是 try/catch 块吗?

我问的原因是,如果它传递了一个错误的参数,它可能会失败,但是在几个表上,我有数据库约束,这也可能导致失败,所以我想尝试确保我正确处理所有事情,而不是一揽子处理它们.

4

1 回答 1

1

来自官方文档

  1. 执行 SQL 语句 建立数据库连接后,可以使用 CDbCommand 执行 SQL 语句。通过使用指定的 SQL 语句调用 CDbConnection::createCommand() 创建一个 CDbCommand 实例:
$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() 是 Active Record (AR) 内部使用的低级方法。你为什么不简单地使用 AR

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

$model = new Table1ModelName;
$model->user_id= $id;
$model->name= $user_name;
...
$model->save();

关于Yii 工作 Active Record仍有许多变通方法和有趣的东西你想学习

于 2013-08-02T15:42:54.443 回答