如何在yii2直接执行SQL
执行SQL
$connection=Yii::app()->db; // 假设你已经建立了一个 "db" 连接
$sql = "SELECT * FROM tbl_log WHERE logid<:logid";
$command=$connection->createCommand($sql);
$v=10000;
//绑定参数防止SQL注入攻击
$command->bindParam(":logid",$v,PDO::PARAM_STR);
/**
//execute(): 执行一个无查询 (non-query)SQL语句, 例如 INSERT, UPDATE 和 DELETE 。如果成功,它将返回此执行所影响的行数。
$rowCount=$command->execute(); // 执行无查询 SQL
$dataReader=$command->query(); // 执行一个 SQL 查询
$rows=$command->queryAll(); // 查询并返回结果中的所有行
$row=$command->queryRow(); // 查询并返回结果中的第一行
$column=$command->queryColumn(); // 查询并返回结果中的第一列
$value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字段
*/
$result = $command->queryAll();
return $result;
使用事务
$transaction=$connection->beginTransaction();
try {
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute(); //.... other SQL executions $transaction->commit();
} catch(\Exception $e){// 如果有一条查询失败,则会抛出异常
$transaction->rollBack();
}