1、数据访问对象(DAO);

执行 SQL 语句

数据库连接建立后,SQL 语句就可以通过使用 [CDbCommand] 执行了。你可以通过使用指定的SQL语句作为参数调用 [CDbConnection::createCommand()] 创建一个 [CDbCommand] 实例。

[php]
$connection=Yii::app()->db; // 假设你已经建立了一个 "db" 连接
// 如果没有,你可能需要显式建立一个连接:
// $connection=new CDbConnection($dsn,$username,$password);
$command=$connection->createCommand($sql);
// 如果需要,此 SQL 语句可通过如下方式修改:
// $command->text=$newSQL;

一条 SQL 语句会通过 [CDbCommand] 以如下两种方式被执行:

  • [execute()|CDbCommand::execute]: 执行一个无查询 (non-query)SQL语句, 例如 INSERTUPDATE 和 DELETE 。如果成功,它将返回此执行所影响的行数。

  • [query()|CDbCommand::query]: 执行一条会返回若干行数据的 SQL 语句,例如 SELECT。 如果成功,它将返回一个 CDbDataReader实例,通过此实例可以遍历数据的结果行。为简便起见, (Yii)还实现了一系列 queryXXX() 方法以直接返回查询结果。

执行 SQL 语句时如果发生错误,将会抛出一个异常。

[php]$rowCount=$command->execute();   // 执行无查询 SQL,增、删、改
$dataReader=$command->query(); // 执行一个 SQL 查询,但是不返回数据$rows=$command->queryAll(); // 查询并返回结果中的所有行$row=$command->queryRow(); // 查询并返回结果中的第一行$column=$command->queryColumn(); // 查询并返回结果中的第一列$value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字段

获取查询结果(query方法和read方法)

在 [CDbCommand::query()] 生成 CDbDataReader 实例之后,你可以通过重复调用 [CDbDataReader::read()] 获取结果中的行。你也可以在 PHP 的 foreach 语言结构中使用 CDbDataReader 一行行检索数据。

[php]
$dataReader=$command->query();
// 1、重复调用 read() 直到它返回 false
while(($row=$dataReader->read())!==false) { ... }
// 2、使用 foreach 遍历数据中的每一行
foreach($dataReader as $row) { ... }

// 3、一次性提取所有行到一个数组
$rows=$dataReader->readAll();

Note|注意: 不同于 [query()|CDbCommand::query], 所有的 queryXXX() 方法会直接返回数据。 例如, [queryRow()|CDbCommand::queryRow] 会返回代表查询结果第一行的一个数组。


yii操作数据库(PDO)的更多相关文章

  1. yii操作数据库(AR)

    模型: 有多少数据表,就建立多少模型 模型其实就是类 我们对数据库进行操作,需要实例化模型类,产生对象 通过对象调用相关的方法,就可以实现数据库的操作   增加记录 [php] $post =newP ...

  2. PHP操作数据库PDO

    PHP操作数据库 载入数据库驱动 訪问phpinfo.php能够查看是否已经载入数据库驱动,例如以下显示还没有载入mySql数据库驱动. 在c盘找到php.ini配置文件开启载入mySql驱动,例如以 ...

  3. Yii操作数据库的3种方法

    一.执行原生太SQL的PDO方式. 复制代码代码如下: $sql = "";//原生态sql语句 xx::model()->dbConnection->createCo ...

  4. Yii框架操作数据库的几种方式与mysql_escape_string

    一.Yii操作数据库的几种选择 1,PDO方式. $sql = "";//原生态sql语句 xx::model()->dbConnection->createComma ...

  5. 使用PDO操作数据库的好处

    PDO一是PHP数据对象(PHP Data Object)的缩写. 并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的P ...

  6. php pdo操作数据库

    POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题. PDO的特点: 性能.PDO 从一开始就吸取了现有数据库扩展成 ...

  7. yii 主从数据库分离-转载http://www.yiichina.com/doc/guide/2.0/db-dao

    数据库复制和读写分离 很多数据库支持数据库复制 database replication来提高可用性和响应速度. 在数据库复制中,数据总是从主服务器 到 从服务器. 所有的插入和更新等写操作在主服务器 ...

  8. YII访问数据库

    YII访问数据库 CDbConnection: 一个抽象数据库连接 CDbCommand: SQL statement CDbDataReader: 匹配结果集的一行记录 CDbTransaction ...

  9. yii框架数据库操作数据访问对象(DAO)简单总结

    Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO)建立在PHP的数据对象(PDO)extension上,使得在一个单一的统一的接口可以访问不同的数据库管理系统(DBMS).使用Yii的DA ...

随机推荐

  1. [C++程序设计]字符数组的赋值与引用

    只能对字符数组的元素赋值,而不能用赋值语句对整个数组赋值. char c[5]; c={′C′,′h′,′i′,′n′,′a′}; //错误,不能对整个数组一次赋值 c[0]=′C′; c[1]=′h ...

  2. python运维开发(二十)----models操作、中间件、缓存、信号、分页

    内容目录 select Form标签数据库操作 models操作F/Q models多对多表操作 Django中间件 缓存 信号 分页 select Form标签补充 在上一节中我们可以知道Form标 ...

  3. python 核心编程第六章课后题自己做的答案

    6–6. 字符串.创建一个 string.strip()的替代函数:接受一个字符串,去掉它前面和后面的 空格(如果使用 string.*strip()函数那本练习就没有意义了) 'Take a str ...

  4. css3的loadding效果

    <!DOCTYPE html> <html> <head> <title>CSS3 loading效果</title> <meta c ...

  5. perl 爬取数据<1>

    use LWP::UserAgent; use POSIX; use DBI; $user="root"; $passwd="11111111"; $dbh=& ...

  6. 2014.8.4我出的模拟赛【NTR酋长】

    NTR酋长 (ntr.pas/.c/.cpp) 黄巨大终于如愿以偿的进入了czy的后宫中……但是czy很生气……他要在黄巨大走到他面前的必经之路上放上几个NTR酋长来阻挡黄巨大. 众所周知,NTR酋长 ...

  7. C#两个时间的时间差的方法

    今天遇到一问题,计算两个时间的时间差,看网上的写法较为复杂,找到个简单点的,记录下作为自己的总结. 关键函数: DateTime.Subtract 函数解释: 从此实例中减去指定的日期和时间,返回一个 ...

  8. UESTC_男神的礼物 2015 UESTC Training for Dynamic Programming<Problem A>

    A - 男神的礼物 Time Limit: 3000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  9. Populating Next Right Pointers in Each Node 解答

    Question Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLink ...

  10. 【转】android 电池(三):android电池系统

    关键词:android电池系统电池系统架构 uevent power_supply驱动 平台信息: 内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV3 ...