资讯专栏INFORMATION COLUMN

Yii 里面直接执行sql语句

lvzishen / 387人阅读

摘要:里面的已经很方便我们进行数据库的操作,但有些时候还需要自己写一些语句去查询等。在里面可以通过以下方式直接执行语句在此之前需要在里面配置数据相关信息然后再通过进行调用。要是直接用在语句中,最好要经过防注入处理。

Yii 自带了丰富的功能 ,包括 MVCDAO/ActiveRecordI18N/L10N缓存身份验证基于角色的访问控制脚手架测试等,可显著缩短开发时间。

Yii里面的 DAO/ActiveRecord 已经很方便我们进行数据库的操作,但有些时候还需要自己写一些 sql 语句去查询等。在 Yii 里面可以通过以下方式直接执行 sql 语句:

在此之前需要在 config/main.php 里面配置数据相关信息:

"db"=>array(
   "class" => "CDbConnection",
   "connectionString" => "mysql:host=127.0.0.1;port=3607;dbname=dbname",
   "emulatePrepare" => true,
   "username" => "root",
   "password" => "mysql",
   "charset" => "utf8",
   "tablePrefix"=>"pf_",
  ),

然后再通过 Yii::app()->db 进行调用。

方式一:

$db = Yii::app()->db;
$sql = "SELECT * FROM `news` ORDER BY id DESC";
$command = $db->createCommand($sql);
$result = $command->queryAll();
print_r($result);

方式二:

$db = Yii::app()->db;
$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";
}

方式三:

$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";
}

方式四:

$db = Yii::app()->db;
$oCommand = $db->createCommand("SELECT * FROM news WHERE title = :title");
$oCommand->bindParam(":title", $title, PDO::PARAM_STR);
$result = $oCommand->queryAll();
print_r($result);

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32039.html

相关文章

  • Yii 里面直接执行sql语句

    摘要:里面的已经很方便我们进行数据库的操作,但有些时候还需要自己写一些语句去查询等。在里面可以通过以下方式直接执行语句在此之前需要在里面配置数据相关信息然后再通过进行调用。要是直接用在语句中,最好要经过防注入处理。 Yii 自带了丰富的功能 ,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。 Yii...

    YancyYe 评论0 收藏0
  • YII2中多表关联的使用

    摘要:第二个参数是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。这里注意中的第二个是指关联的中的,第一个是指中的。 首先先来说明一下表结构 表结构 现在有订单表、用户表、商品清单表、商品库存表 showImg(https://segmentfault.com/img/bVRcME?w=833&h=244); showImg(https://segmentfault.com/i...

    vslam 评论0 收藏0
  • YII2中多表关联的使用

    摘要:第二个参数是一个数组,其中键为所关联的模型中的属性,值为当前模型中的属性。这里注意中的第二个是指关联的中的,第一个是指中的。 首先先来说明一下表结构 表结构 现在有订单表、用户表、商品清单表、商品库存表 showImg(https://segmentfault.com/img/bVRcME?w=833&h=244); showImg(https://segmentfault.com/i...

    DevYK 评论0 收藏0
  • Yii AR的使用

    摘要:因为刚开始学习框架的时候使用的是,后来开始接触的时候各种不熟悉,只能是各种百度,因为自己英语很弱,花了不少时间。 因为刚开始学习php 框架的时候使用的是 CI,后来开始接触 Yii 的时候各种不熟悉,只能是各种百度,因为自己英语很弱,花了不少时间。 如果英文不错,可以直接看原文地址 http://www.yiiframework.com/doc/guide/1.1/en/datab...

    LiuRhoRamen 评论0 收藏0
  • Yii 1.0数据库操作 查询、增加、更新、删除

    摘要:根据条件查询一个集合根据主键查询一个集合可以使用多个主键根据条件查询一个集合可以是多个条件把条件放到数组里面根据语句查询一个数组根据主键查询出一个对象根据条件查询出一组数据可能是多个但是他只返回第一行数据根据 1、根据条件查询一个集合 $objectResult=Post::model()->findAll($condition,$params); $oClasses = classe...

    malakashi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<