建立数据库连接
$connection=Yii::app()->db; // 假设你已经建立了一个 “db” 连接 // 如果没有,你可能需要显式建立一个连接: // $connection=new CDbConnection($dsn,$username,$password); $command=$connection->createCommand($sql); // 如果需要,此 SQL 语句可通过如下方式修改: // $command->text=$newSQL;
执行 SQL 语句
$rowCount=$command->execute(); // 执行无查询 SQL
$dataReader=$command->query(); // 执行一个 SQL 查询
$rows=$command->queryAll(); // 查询并返回结果中的所有行
$row=$command->queryRow(); // 查询并返回结果中的第一行
$column=$command->queryColumn(); // 查询并返回结果中的第一列
$value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字段
获取查询结果
$dataReader=$command->query(); // 重复调用 read() 直到它返回 false
while(($row=$dataReader->read())!==false) { … }
// 使用 foreach 遍历数据中的每一行
foreach($dataReader as $row) { … }
//一次性提取所有行到一个数组 $rows=$dataReader->readAll();
$rowCount = $command->execute();
$dataReader = $command->query();
$rows=$command->queryAll();
$row =$command->queryRow();
$column =$command->queryColumn();
$value = $command->queryScalar();
绑定参数
// 一条带有两个占位符 “:username” 和 “:email”的 SQL
$sql=”INSERT INTO tbl_user (username, email) VALUES(:username,:email)”; $command=$connection->createCommand($sql);
// 用实际的用户名替换占位符 “:username” $command->bindParam(“:username”,$username,PDO::PARAM_STR);
// 用实际的 Email 替换占位符 “:email” $command->bindParam(“:email”,$email,PDO::PARAM_STR);
$command->execute(); // 使用新的参数集插入另一行
$command->bindParam(“:username”,$username2,PDO::PARAM_STR);
$command->bindParam(“:email”,$email2,PDO::PARAM_STR); $command->execute();
若是原生的SQL语句执行更新操作(不适用模型)
方法一
$sql = ‘update video set status = 1 where status = 0’;
$effectRows = Yii::app()->db->createCommand($sql)->execute();//返回受影响行数
方法二:
Yii::app()->db
->createCommand(“update video set status = :status where status = 0”)
->bindValues(array(‘:status’ => $_POST[‘status’]))
->execute();//同样是返回受影响行
如果是使用query则不能返回受影响行
$sql = ‘update video set status = 1 where status = 0’;
$effectRows = Yii::app()->db->createCommand($sql)->query();
如果使用queryAll()等方法,直接报错
$effectRows = Yii::app()->db->createCommand($sql)->queryAll();