Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304411
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站导航为爱好php程序的朋友们提供php相关的教程知识。

Data Access Objects (DAO) 提供了一个通用的 API 以访问存储在不同 DBMS 中的数据. 这样,数据库改变时可以无需修改访问数据库的具体代码如下.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Yii DAO 建立于 PhP程序 Data Objects (PDO) ,它是一个为很多 DBMS 提供统一数据访问的扩展, 支持MySQL,PostgreSQL 等. 因此, 要使用 Yii DAO, PDO 扩展和指定的 PDO 数据库驱动 (例如 PDO_MYSQL) 需要被安装.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Yii DAO 主要由下面四个类组成:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

CDbConnection: 代表一个数据库连接.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

CDbCommand: 代表一个执行到数据库的 SQL 语句.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

CDbDataReader: represents a forward-only stream of rows from a query result set.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

CDbTransaction: represents a DB 事务处理.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

下面我们介绍在不同场景中 Yii DAO 的用法.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

建立数据库连接q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

要建立一个数据库连接, 需要创建一个 CDbConnection 具体实例操作并激活它. 一个数据源名字(DSN) 被用来指定数据库连接信息. 可能也会需要用户名和密码来建立连接.若在连接数据库时出现错误,将会触发一个异常(例如. 错误的 DSN 或无效的 用户名/密码).q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$connection=new CDbConnection($dsn,$username,$password);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// establish connection. You may try...catch possible exceptionsq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$connection->active=true;q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

......q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$connection->active=false;  // close connectionq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

DSN 的格式取决于使用的 PDO 数据库驱动. 通常一个 DSN 由 PDO 驱动名字, 跟上一个冒号, 以及驱动专有的连接句法组成. PDO documentation 可以查看到完整信息. 下面是一个常用的 DSN 格式列表:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

SQLite: sqlite:/path/to/dbfileq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

MySQL: mysql:host=localhost;dbname=testdbq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdbq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

SQL Server: mssql:host=localhost;dbname=testdbq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Oracle: oci:dbname=//localhost:1521/testdbq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

因为 CDbConnection 扩展自 CApplicationComponent, 我们也可以使用它作为一个应用组件. 我们可以在应用配置中如下配置 db (或其他名字) 应用组件,来实现此目的q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

array(q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   ......q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   'components'=>array(q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

       ......q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

       'db'=>array(q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

           'class'=>'CDbConnection',q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

           'connectionString'=>'mysql:host=localhost;dbname=testdb',q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

           'username'=>'root',q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

           'password'=>'password',q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

           'emulatePrepare'=>true,  // needed by some MySQL installationsq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

       ),q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   ),q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

)q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

除非我们明确配置CDbConnection::autoConnect 为 false,否则我们就可以通过已自动被激活的 Yii::app()->db 来访问此 DB 连接, 通过这个方法, 这个单一的 DB 连接可以在具体代码如下中的多处位置共享.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

执行 SQL 语句q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

一旦一个数据库连接建立, 就可以使用 CDbCommand 来执行 SQL 语句. 可以通过调用CDbConnection::createCommand()来创建一个CDbCommand 具体实例操作,参数是一个 SQL 语句:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command=$connection->createCommand($sql);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// 若需要, SQL 语句可以被如下更新:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// $command->text=$newSQL;q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

一个 SQL 语句被执行通过 CDbCommand 以下面两种方式:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

execute(): 执行一个非查询的 SQL 语句, 例如 INSERT, UPDATE 和 DELETE. 若成功执行, 返回影响的记录数目.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

query(): 执行一条返回数据记录的 SQL 语句, 例如 SELECT. 若成功, 返回一个 CDbDataReader 具体实例操作. 方便起见, 一些 queryXXX() 方法也可以执行直接以返回查询结果.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

若在 SQL 语句查询过程中出现错误,会触发一个异常.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$rowCount=$command->execute();   // execute the non-query SQLq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$dataReader=$command->query();   // execute a query SQLq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$rows=$command->queryAll();      // query and return all rows of resultq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$row=$command->queryRow();       // query and return the first row of resultq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$column=$command->queryColumn(); // query and return the first column of resultq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$value=$command->queryScalar();  // query and return the first field in the first rowq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

读取查询结果q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

在 CDbCommand::query() 产生 CDbDataReader 具体实例操作后, 可以通过反复调用CDbDataReader::read()来取得结果集的记录. 也可以在 PhP程序 的foreach 语言结构中使用CDbDataReader 以逐行检索记录.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$dataReader=$command->query();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// calling read() repeatedly until it returns falseq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

while(($row=$dataReader->read())!==false) { ... }q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// using foreach to traverse through every row of dataq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

foreach($dataReader as $row) { ... }q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// retrieving all rows at once in a single arrayq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$rows=$dataReader->readAll();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

注意: 不同于 query(), 所有 queryXXX() 方法直接返回数据. 例如, queryRow() 返回一个数组,它代表着查询结果中的第一行记录.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

使用事务处理q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

当在一个应用执行一些查询时, 每次读取 和/或 写入数据库中的信息, 确保数据库不是只执行了一部分查询,这一点非常重要. 一个事务处理, 在 Yii 的代表是一个CDbTransaction 具体实例操作, may be initiated in this case:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

开始事务处理.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

逐个执行查询. 任何对数据库的更新对于外部都是不可见的.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

提交(Commit)事务. 若事务成功执行,对数据库的更改变得可见.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

若其中一个查询失败, 整个事务被回滚(rolle back).q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

上面的流程可以使用下面的具体代码如下来执行:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$transaction=$connection->beginTransaction();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

tryq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

{q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   $connection->createCommand($sql1)->execute();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   $connection->createCommand($sql2)->execute();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   //.... other SQL executionsq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   $transaction->commit();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

}q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

catch(Exception $e) // an exception is raised if a query failsq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

{q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   $transaction->rollBack();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

}q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

绑定参数q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

为了避免 SQL 注入攻击 和改善执行反复的SQL语句的性能, 你可以"prepare" 一个 SQL 语句,其中的可选参数占位符在参数绑定过程中被实际的数据代替.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

参数占位符可以是 命名的(represented as unique tokens) 或 未命名的(represented as question marks). 调用 CDbCommand::bindParam() 或 CDbCommand::bindValue() 以替换这些占位符为实际的参数. 参数无需以引号环绕: 底层数据库驱动为你完成. 参数绑定必须在 SQL 语句被执行前完成.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// an SQL with two placeholders ":username" and ":email"q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command=$connection->createCommand($sql);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// replace the placeholder ":username" with the actual username valueq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->bindParam(":username",$username,PDO::PARAM_STR);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// replace the placeholder ":email" with the actual email valueq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->bindParam(":email",$email,PDO::PARAM_STR);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->execute();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// insert another row with a new set of parametersq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->bindParam(":username",$username2,PDO::PARAM_STR);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->bindParam(":email",$email2,PDO::PARAM_STR);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$command->execute();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

方法 bindParam() 和 bindValue() 非常类似. 唯一不同点是前者以一个 PhP程序 变量引用(reference)绑定一个参数,而后者以一个值绑定一个参数. 对于大量参数(For parameters that represent large block of data memory),为了性能考虑应当使用前者.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于绑定参数的更详细信息, 查看 相关 PhP程序 文档.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

绑定字段(Binding Columns)q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

当取出查询结果时, 你也可以绑定字段为 PhP程序 变量以便它们被每次取出的相应值自动填充.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$sql="SELECT username, email FROM tbl_user";q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$dataReader=$connection->createCommand($sql)->query();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// bind the 1st column (username) with the $username variableq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$dataReader->bindColumn(1,$username);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

// bind the 2nd column (email) with the $email variableq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$dataReader->bindColumn(2,$email);q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

while($dataReader->read()!==false)q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

{q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

   // $username and $email contain the username and email in the current rowq0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

}q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

使用表前缀q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

从版本 1.1.0 开始, Yii 为使用数据表前缀提供了完整的支持. 表前缀是一个字符串,放置在数据表名字的前面.主要用于共享主机环境,多个应用分享一个数据库,使用不同的表前缀以相互区分. 例如, 一个可以使用 tbl_ 作为表前缀而另一个使用 yii_.q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

要使用表前缀, 配置 CDbConnection::tablePrefix 属性为你的表前缀. 然后, 在 SQL 语句中使用 {{TableName}} 指向表的名字, TableName 指的是不加前缀的表名字. 例如, 若数据库中有一个名为 tbl_user 的表, 同时tbl_ 被配置为表前缀, 然后我们可以使用下面的具体代码如下查询用户:q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$sql='SELECT * FROM {{user}}';q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$users=$connection->createCommand($sql)->queryAll();q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

名站网址导航

PhP程序环境下Fckeditor上传图片配置教程q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

  考虑到目录安全性问题,默认Fckeditor2.6.6上传功能并未开启,所以第一步我们必须开启Fckeditor上传功能,这里需要注意,由于PhP程序版本Fckeditor上传功能需要用到chomod函数对新建目录进行权限设置,所以请务必确认在启用Fckeditor上传功能时PhP程序环境的用户具有创建和更改上传目录的权限。q0CAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

好了关于php程序的知识就说到这里希望可以帮助需要的朋友。,

标签:

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304411

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市