• Yii框架查看原生态sql的实现方法和使用


    首先在YII的配置文件里,数据库的配置那一段增加如下两个配置.

    'components' => array(

        'db' => array(

            'connectionString' => 'mysql:host=localhost;dbname=test',

            'username' => 'test',

            'password' => 'sxaskdljfjrfnmczd',

            'enableProfiling' => true,    //配置1

            'enableParamLogging' => true,    //配置2

        ),

    ),

    接着在日志配置那一段修改为如下配置

    'components' => array(

        'log' => array(

            'class' => 'CLogRouter',

            'routes' => array(

                array(

                    'class'=>'CProfileLogRoute',

                    'levels'=>'profile',    //这里是记录运行的级别日志,可选notice,error,trace,log,profile等

                    //'showInFireBug' => true,

                    'categories'=>'system.db.CDbCommand.query'

                ),

            ),

        ),

    ),

    showInFireBug这个选项为是否在firebug里面查看运行日志记录.如果不设置的话,那默认就是在页面的底部显示,如果设置了,就在打开的firebug里面查看.

    再有朋友可能不知道YII的记录日志是在什么地方.当然前提是你已经把日志记录到文件中,具体设置方法为

    'log'=>array(

      'class'=>'CLogRouter',

      'routes'=>array(

        array(

          'class'=>'CFileLogRoute',

          'levels'=>'trace,log',

          'categories' => 'system.db.CDbCommand',

          'logFile' => 'db.log',

        ),

      ),

    ),

    这里设置的日志记录文件为:protected/runtime/db.log 日志的记录,显示方式可以设置多种均可以生效.

    $connection = Yii::app()->db; //连接

    //查找

    $sql = “SELECT * FROM `tbl_user` ORDER BY id DESC”;

    $command = $connection->createCommand($sql);

    $result = $command->queryAll();

    print_r($result);

    //添加

    $sql = ” INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES (‘test’, ‘test’, ‘test@test.com’) “;

    $command=$connection->createCommand($sql);

    print_r($command->execute());

    //添加 返回自增id

    $command1 = $connection->createCommand(“SELECT last_insert_id()”);

    $result = $command1->queryAll();

    //常用函数

    (1)如果你执行的SQL语句有返回结果集: 例如SELECT。通常用query开头的系列函数:

    $dataReader=$command->query(); // 执行一个 SQL 查询

    $rows=$command->queryAll(); // 查询并返回结果中的所有行

    $row=$command->queryRow(); // 查询并返回结果中的第一行

    $column=$command->queryColumn(); // 查询并返回结果中的第一列

    $value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字

    (2)你执行的SQL语句返回的不是结果集,只是状态值,例如:INSERT ,UPDATE,DELETE.则用execute()

    $this->command->execute();

    //使用事务的一种常见情形:CDbTransaction

    $transaction = $connection->beginTransaction();

    try{

    $connection->createCommand($sql1)->execute();

    $connection->createCommand($sql2)->execute();

    ………

    $transaction->commit();

    }

    catch(Exception $e){     // 如果有一条查询失败,则会抛出异常

    $transaction->rollBack();

    }

    $connection = Yii::app()->db;  
    $sql = "SELECT * FROM `project` ORDER BY id DESC";  
    $command = $connection->createCommand($sql);  
    $result = $command->queryAll();  
    print_r($result);  
    复制代码
    $db = Yii::app()->db; //you have to define db connection in config/main.php  
    $sql = "select sum(if(starttime>'09:00:00',1,0)) as late,  
      sum(if(endtime<'18:00:00',1,0)) as early           
    from present where userid=:userid and date between :date_start and :date_end"  
    $results = $db->createCommand($sql)->query(array(  
      ':userid' => 115,':date_start'=>'2009-12-1',':date_end'=>'2009-12-31',  
    ));  
    foreach($results as $result){  
      echo $result['late']," and ",$result['early']," /n";  
    复制代码

    }   

    说明:把查询条件作为参数(如例2),比较安全,可直接避免注入。要是直接用在SQL语句中,最好要经过防注入处理。 

     $sql = "select sum(if(starttime>'09:00:00',1,0)) as late,  

      sum(if(endtime<'18:00:00',1,0)) as early           
    from present where userid=115 and date between '2009-12-1' and '2009-12-31'"  
    $results = $db->createCommand($sql)->query();  
    foreach($results as $result){  
      echo $result['late']," and ",$result['early']," /n";  
    }  
  • 相关阅读:
    Bootstrap组件福利篇 网址
    <a>标签中的href="javascript:;"
    HTTP请求上下文之终结:HttpContext类
    数据库分离 附加 sqlserver
    C#中三层架构UI、BLL、DAL、Model实际操作(转)
    比较好的网上的sqlserver读书笔记
    ORACLE重建索引详解
    SQL Server遍历表的几种方法(转)
    提高数据库操作的效率(转)
    哈希表Hashtable与字典表Dictionary<K,V>的比较。
  • 原文地址:https://www.cnblogs.com/aprils/p/4819910.html
Copyright © 2020-2023  润新知