在Yii中直接使用sql,是建立在php扩展PDO的基础之上。(使用前,确保PDO已安装)
一、建立连接
$connection = Yii::app()->db;
其中db是在../config/main.php中配置的
二、使用sql
1,查询——query
方式一:最简洁
方式二:主要区别在查询动作。
可拆分为两步
2,创建、更新和删除——execute
$rowCount = $command->execute(); //执行
三、query的高级用法
$row = $command->queryRow(); //取多列结果中的第一列
$column = $command->queryColumn(); //取多列结果中第一行的第一列
$value = $command->queryScalar(); //取多列结果中第一行的第一字段
四、使用事务
一、建立连接
$connection = Yii::app()->db;
其中db是在../config/main.php中配置的
二、使用sql
1,查询——query
方式一:最简洁
- $sql = "select a.id,b.name,parts_type,parts_model,partManufacturer,number,confirm_ok_num,confirm_bad_num from fail_parts a, idc b where a.idc_id = b.id and a.status_id != 731 and confirm_bad_num != 0 order by b.name;";
- //可以写成
- //$connection = Yii::app()->db;
- //$command = $connection->createCommand($sql)
- $command = Yii::app()->db->createCommand($sql);
- $rows = $command->queryAll(); //结果数组,多行的内容
- var_dump($rows);
- foreach($rows as $row){
- var_dump($row);//一行的内容
- }
方式二:主要区别在查询动作。
可拆分为两步
- $dataReader = $command->query();
- while(($row = $dataReader->read()) !== false){
- var_dump($row);//一行的内容
- }
2,创建、更新和删除——execute
$rowCount = $command->execute(); //执行
三、query的高级用法
$row = $command->queryRow(); //取多列结果中的第一列
$column = $command->queryColumn(); //取多列结果中第一行的第一列
$value = $command->queryScalar(); //取多列结果中第一行的第一字段
四、使用事务
- $trans = $connection->beginTransaction();
- //$trans = Yii::app()->db->beginTransaction();
- try{
- $connection->createCommand($sql1)->execute();
- $connection->createCommand($sql2)->execute();
- ...
- $trans->commit();
- } catch (Exception $e) {
- $trans->rollBack();
- }