$db = Yii::$app->db;2 $rows = $db->createCommand(‘SELECT * FROM zs_dynasty‘)3 ->queryAll();
1 $rowCount=$command->execute(); // 执行无查询 SQL2 $dataReader=$command->query(); // 执行一个 SQL 查询3 $rows=$command->queryAll(); // 查询并返回结果中的所有行4 $row=$command->queryRow(); // 查询并返回结果中的第一行5 $column=$command->queryColumn(); // 查询并返回结果中的第一列6 $value=$command->queryScalar(); // 查询并返回结果中第一行的第一个字段
获取查询结果
1 $db = Yii::$app->db; 2 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘) 3 ->query(); 4 while(($row=$query->read())!==false) { 5 print_r($row); 6 } 7 // 使用 foreach 遍历数据中的每一行 8 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘) 9 ->query();10 foreach($query as $row) {11 print_r($row);12 }13 // 一次性提取所有行到一个数组14 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘)15 ->query();16 $rows=$query->readAll();17 print_r($rows);使用事务
1 $db = Yii::$app->db; 2 $transaction=$db->beginTransaction(); 3 try 4 { 5 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘) 6 ->query(); 7 $transaction->commit(); 8 } 9 catch(Exception $e) // 如果有一条查询失败,则会抛出异常10 {11 $transaction->rollBack();12 }13 $rows=$query->readAll();14 print_r($rows);
1 绑定参数 2 // 一条带有两个占位符 ":username" 和 ":email"的 SQL 3 $sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)"; 4 $db = Yii::$app->db; 5 $command=$db->createCommand($sql); 6 // 用实际的用户名替换占位符 ":username" 7 $command->bindParam(":username",$username,PDO::PARAM_STR); 8 // 用实际的 Email 替换占位符 ":email" 9 $command->bindParam(":email",$email,PDO::PARAM_STR);10 $command->execute();11 // 使用新的参数集插入另一行12 $command->bindParam(":username",$username2,PDO::PARAM_STR);13 $command->bindParam(":email",$email2,PDO::PARAM_STR);14 $command->execute();
1 绑定列 2 $sql="SELECT username, email FROM tbl_user"; 3 $dataReader=$db->createCommand($sql)->query(); 4 // 使用 $username 变量绑定第一列 (username) 5 $dataReader->bindColumn(1,$username); 6 // 使用 $email 变量绑定第二列 (email) 7 $dataReader->bindColumn(2,$email); 8 while($dataReader->read()!==false) 9 {10 // $username 和 $email 含有当前行中的 username 和 email 11 }
1 使用表前缀2 配置:Connection::tablePrefix 3 在 SQL 语句中使用 {{%TableName}}4 $sql=‘SELECT * FROM {{user}}‘;5 $users=$connection->createCommand($sql)->queryAll();
yii2数据库操作DAO
标签:pre rollback dao code ble back 使用 param connect
小编还为您整理了以下内容,可能对您也有帮助:
Yii如何使用数据库
1.Yii如何使用数据库
Yii通过数据库访问对象(Database Access Objects,简称DAO)来使用数据库的。
DAO建立在“PHP数据对象(PDO)之上,并提供一套面向对象的API来访问数据库”
2.数据库的连接
数据库的连接通常放在配置文件中,/common/config/main-local.php中。
‘db‘ => [
‘class‘ => ‘yiidbConnection‘,
‘dsn‘ => ‘mysql:host=localhost;dbname=yii2advanced‘,
‘username‘ => ‘root‘,
‘password‘ => ‘root‘,
‘charset‘ => ‘utf8‘,
],
这里表示会创建一个yiidbConnection对象,并用这个对象访问数据库。
这个数据库连接对象的写法:Yii->$app->db
连接不同数据库的语句略微有些差异。
3,数据库查询(yiidbCommand)
用SQL查询语句来创建一个yiidbCommand的对象,调用对象的方法来执行SQL查询,返回值是字符型的数组。
$post = Yii::$app->db->createCommand(‘SELECT * FROM post‘)->queryAll();
SQL语句还可以绑定参数。
$post = Yii::$app->db->createCommand(‘SELECT * FROM post WHERE id=:id AND status=:status‘)
->bindValue(‘:id‘,$_GET[‘id‘])
->bindValue(‘:status‘,2)
->queryOne();
4,yiidbCommand的优缺点
1,简单,只需要处理sql语句和数组就行了(优点)
2,高效,通过sql语句来查询数据库非常高效。(优点)
----------------------------------------------------------
1,不同的数据库系统的sql语句会有些差别,因此无法做到代码适用于多种数据库系统。(缺点)
2,用数组,而没有用到面向对象的方式来管理数据,代码难维护。(缺点)
3,如果不小心,会留下SQL注入这种不安全因素。(缺点)
Yii如何使用数据库
标签:cal优点imgman无法imalocal管理base
Yii2框架操作数据库的方法分析【以mysql为例】
本文实例讲述了Yii2框架操作数据库的方法。分享给大家供大家参考,具体如下:
准备数据库
DROP
TABLE
IF
EXISTS
`pre_user`;
CREATE
TABLE
`pre_user`(
`id`
int(11)
AUTO_INCREMENT
PRIMARY
KEY,
`username`
varchar(255)
NOT
NULL,
`password`
varchar(32)
NOT
NULL
DEFAULT
'',
`password_hash`
varchar(255)
NOT
NULL
DEFAULT
'',
`email`
varchar(255)
NOT
NULL
DEFAULT
'',
`status`
smallint(6)
NOT
NULL
DEFAULT
10,
`created_at`
smallint(6)
NOT
NULL
DEFAULT
0,
`updated_at`
smallint(6)
NOT
NULL
DEFAULT
0
)ENGINE=InnoDB
DEFAULT
CHARSET=utf8mb4;
配置连接
config\db.php
<?php
return
[
'class'
=>
'yii\db\Connection',
'dsn'
=>
'mysql:host=localhost;dbname=yii2',
'username'
=>
'root',
'password'
=>
'root',
'charset'
=>
'utf8mb4',
'tablePrefix'
=>
'pre_'
];
查看数据库连接是否成功
控制器里打印:
var_mp(\Yii::$app->db);
怎么执行SQL语句?
增删改
//
接收表单的数据
$username
=
'jack';
$sql
=
"INSERT
INTO
{{%user}}
(username,status)
VALUES
(:username,:status)";
//
返回受影响行数
$row
=
\Yii::$app->db->createCommand($sql,['username'=>$username,'status'=>8])->execute();
//
获取自增ID
echo
\Yii::$app->db->getLastInsertID();
查询
$sql
=
"SELECT
*
FROM
{{%user}}
WHERE
id>:id";
//
查询结果是一个二维数组
$userArr
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryAll();
//
如果要查询一个
$user
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryOne();
//
如果要返回单值
//
例如
select
count(*)语句
$count
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryScalar();
echo
$count;
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
您可能感兴趣的文章:Yii2.0高级框架数据库增删改查的一些操作Yii2——使用数据库操作汇总(增删查改、事务)Yii2数据库操作常用方法小结Yii2框架实现数据库常用操作总结Yii2实现跨mysql数据库关联查询排序功能代码Yii+MYSQL锁表防止并发情况下重复数据的方法Yii
连接、修改
MySQL
数据库及phpunit
测试连接Yii实现MySQL多数据库和读写分离实例分析Yii操作数据库实现动态获取表名的方法Yii操作数据库的3种方法
Yii2框架操作数据库的方法分析【以mysql为例】
本文实例讲述了Yii2框架操作数据库的方法。分享给大家供大家参考,具体如下:
准备数据库
DROP
TABLE
IF
EXISTS
`pre_user`;
CREATE
TABLE
`pre_user`(
`id`
int(11)
AUTO_INCREMENT
PRIMARY
KEY,
`username`
varchar(255)
NOT
NULL,
`password`
varchar(32)
NOT
NULL
DEFAULT
'',
`password_hash`
varchar(255)
NOT
NULL
DEFAULT
'',
`email`
varchar(255)
NOT
NULL
DEFAULT
'',
`status`
smallint(6)
NOT
NULL
DEFAULT
10,
`created_at`
smallint(6)
NOT
NULL
DEFAULT
0,
`updated_at`
smallint(6)
NOT
NULL
DEFAULT
0
)ENGINE=InnoDB
DEFAULT
CHARSET=utf8mb4;
配置连接
config\db.php
<?php
return
[
'class'
=>
'yii\db\Connection',
'dsn'
=>
'mysql:host=localhost;dbname=yii2',
'username'
=>
'root',
'password'
=>
'root',
'charset'
=>
'utf8mb4',
'tablePrefix'
=>
'pre_'
];
查看数据库连接是否成功
控制器里打印:
var_mp(\Yii::$app->db);
怎么执行SQL语句?
增删改
//
接收表单的数据
$username
=
'jack';
$sql
=
"INSERT
INTO
{{%user}}
(username,status)
VALUES
(:username,:status)";
//
返回受影响行数
$row
=
\Yii::$app->db->createCommand($sql,['username'=>$username,'status'=>8])->execute();
//
获取自增ID
echo
\Yii::$app->db->getLastInsertID();
查询
$sql
=
"SELECT
*
FROM
{{%user}}
WHERE
id>:id";
//
查询结果是一个二维数组
$userArr
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryAll();
//
如果要查询一个
$user
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryOne();
//
如果要返回单值
//
例如
select
count(*)语句
$count
=
\Yii::$app->db->createCommand($sql,['id'=>1])->queryScalar();
echo
$count;
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
您可能感兴趣的文章:Yii2.0高级框架数据库增删改查的一些操作Yii2——使用数据库操作汇总(增删查改、事务)Yii2数据库操作常用方法小结Yii2框架实现数据库常用操作总结Yii2实现跨mysql数据库关联查询排序功能代码Yii+MYSQL锁表防止并发情况下重复数据的方法Yii
连接、修改
MySQL
数据库及phpunit
测试连接Yii实现MySQL多数据库和读写分离实例分析Yii操作数据库实现动态获取表名的方法Yii操作数据库的3种方法
yii2 连接oracle数据库 怎么用
操作步骤如下:
1、请先保证oracle可以正常运行。
2、打开Eclipse,找到逗Window地--逗Show View地--逗Other...地
3、在弹出的新窗口中,打开文件夹逗Data Management地找到逗Data Source Explorer地,并单击逗OK地。
4、这时候,Eclipse主界面下方会多出一个逗Data Source Explorer地标签栏,在其中逗Database Connections地文件夹图标上单击右键,选中逗New...地。
5、出现新窗口,找到自己正在使用的数据库"Oracle",自行起个名字,在此起了"cityinfo"这个名字。然后单击逗Next>地
6、出现如下窗口时,请单击右上方图中所示的符号(位置),注意此步骤。
7、紧接上步,在新的对话框中,找到所使用的oracle版本,建议选用Oracle Thin Driver。
8、找到JAR List,若大家使用的是oracle11,请将其中的ojdbc14给remove掉,否则,Eclipse会不停提示出错。
9、按着上一步remove掉ojdbc14后,请导入目前正使用的oracle的驱动包,这里用的是oracle11,因此,需要导入ojdbc6,这一驱动包在oracle安装文件中就有。
10、进入properties标签栏,输入自己所建数据库相关内容,这里在oracle中建的用户名是逗cityinfo地。这一步各自的信息可能不同,请自行决定。然后单击逗OK地。
11、上步点击逗OK地后,会返回前一个窗口,这时,Eclipse会提示要求输入"user name"用户名,就是大家所建立的数据库的名称,不是任意起的名字。输入后,可单击下方的"Test Connection",当提示逗Ping Successed!地时,表示Eclipse和oracle连接成功。然后单击逗Finish地完成配置。
12、此时,要做的工作就是在Eclipse中,用视图显示出所建数据库中的各表。回到Eclipse主界面,找到如下图所示位置,在"tables"中,任意表点击右键,选择逗Data地--"Sample Contents"。
13、出现新的标签栏SQL Results,里面显示的就是数据库中所存的表的信息。
yii2 连接oracle数据库 怎么用
操作步骤如下:
1、请先保证oracle可以正常运行。
2、打开Eclipse,找到逗Window地--逗Show View地--逗Other...地
3、在弹出的新窗口中,打开文件夹逗Data Management地找到逗Data Source Explorer地,并单击逗OK地。
4、这时候,Eclipse主界面下方会多出一个逗Data Source Explorer地标签栏,在其中逗Database Connections地文件夹图标上单击右键,选中逗New...地。
5、出现新窗口,找到自己正在使用的数据库"Oracle",自行起个名字,在此起了"cityinfo"这个名字。然后单击逗Next>地
6、出现如下窗口时,请单击右上方图中所示的符号(位置),注意此步骤。
7、紧接上步,在新的对话框中,找到所使用的oracle版本,建议选用Oracle Thin Driver。
8、找到JAR List,若大家使用的是oracle11,请将其中的ojdbc14给remove掉,否则,Eclipse会不停提示出错。
9、按着上一步remove掉ojdbc14后,请导入目前正使用的oracle的驱动包,这里用的是oracle11,因此,需要导入ojdbc6,这一驱动包在oracle安装文件中就有。
10、进入properties标签栏,输入自己所建数据库相关内容,这里在oracle中建的用户名是逗cityinfo地。这一步各自的信息可能不同,请自行决定。然后单击逗OK地。
11、上步点击逗OK地后,会返回前一个窗口,这时,Eclipse会提示要求输入"user name"用户名,就是大家所建立的数据库的名称,不是任意起的名字。输入后,可单击下方的"Test Connection",当提示逗Ping Successed!地时,表示Eclipse和oracle连接成功。然后单击逗Finish地完成配置。
12、此时,要做的工作就是在Eclipse中,用视图显示出所建数据库中的各表。回到Eclipse主界面,找到如下图所示位置,在"tables"中,任意表点击右键,选择逗Data地--"Sample Contents"。
13、出现新的标签栏SQL Results,里面显示的就是数据库中所存的表的信息。
yii2怎么删除数据库的一条数据
yii2 删除数据
一
// DELETE (table name, condition)二
Yii::$app->db->createCommand('DELETE FROM post WHERE id=1')->execute();三
要删除单行数据,首先获取与该行对应的 Active Record 实例,然后调用 yiidbActiveRecord::delete() 方法。
$customer = Customer::findOne(123);快速、安全、专业 的 PHP 框架
Yii 是一个 高性能 的,适用于开发 WEB 2.0 应用的 PHP 框架。
Yii 自带了 丰富的功能,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。
yii2怎么删除数据库的一条数据
yii2 删除数据
一
// DELETE (table name, condition)二
Yii::$app->db->createCommand('DELETE FROM post WHERE id=1')->execute();三
要删除单行数据,首先获取与该行对应的 Active Record 实例,然后调用 yiidbActiveRecord::delete() 方法。
$customer = Customer::findOne(123);快速、安全、专业 的 PHP 框架
Yii 是一个 高性能 的,适用于开发 WEB 2.0 应用的 PHP 框架。
Yii 自带了 丰富的功能,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。
mysql如何更改默认数据库表名称中 Yii2
常见的主要有三种方法:
如果所有表都是MyISAM类型的话,可以直接修改文件夹的名字。关闭mysql→把data目录中的db_name目录重命名为new_db_name→开启mysql
新建数据库,在新的数据库里重命名所有旧数据库中的表,再删除旧的数据库。具体操作命令如下:创建新的数据库→重命名数据表名称→删除旧的数据库。
CREATE DATABASE new_db_name;RENAME TABLE db_name.table1 TO new_db_name.table1,db_name.table2 TO new_db_name.table2;DROP DATABASE db_name;
利用mysqlmp命令从旧的数据导出数据,再导入新数据库。具体操作命令如下:导出数据→创建新的数据库→导入数据→删除旧的数据库。
mysqlmp -u root -p -h ip db_name > db_name_mp.SQLmysql -u root -p -h ip -e “CREATE DATABASE new_db_name”mysql -u root -p -h ip new_db_name < db_name_mp.SQLmysql -u root -p -h ip -e “DROP DATABASE db_name”
mysql如何更改默认数据库表名称中 Yii2
常见的主要有三种方法:
如果所有表都是MyISAM类型的话,可以直接修改文件夹的名字。关闭mysql→把data目录中的db_name目录重命名为new_db_name→开启mysql
新建数据库,在新的数据库里重命名所有旧数据库中的表,再删除旧的数据库。具体操作命令如下:创建新的数据库→重命名数据表名称→删除旧的数据库。
CREATE DATABASE new_db_name;RENAME TABLE db_name.table1 TO new_db_name.table1,db_name.table2 TO new_db_name.table2;DROP DATABASE db_name;
利用mysqlmp命令从旧的数据导出数据,再导入新数据库。具体操作命令如下:导出数据→创建新的数据库→导入数据→删除旧的数据库。
mysqlmp -u root -p -h ip db_name > db_name_mp.SQLmysql -u root -p -h ip -e “CREATE DATABASE new_db_name”mysql -u root -p -h ip new_db_name < db_name_mp.SQLmysql -u root -p -h ip -e “DROP DATABASE db_name”
YII连接数据库总是错误,请问谁有办法
1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。 要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写 的权限,因为Jet需要在该目录建立一个.ldb文件。
2、第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。 SQL = "UPDATE Procts Set UnitPrice = 2; " Set Conn = Server.CreateObject( "ADODB.Connection ") Conn.Mode = 3 '3 = adModeReadWrite Conn.Open "myDSN " Conn.Execute(SQL) Conn.Close 注意默认的Mode是设置0(adModeUnknown),它是允许更新的。
3、还有可能是在ODBC管理器中将该DSN的只读选项选中。
4、你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新这两个表中各自字段。
5、当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)中的查询时,在执行这个查询是会出现该错误。
yii2 怎么批量删除
需求:
向后台发送多条数据,其中一些数据已经存在记录,只需要对其部分字段的值进行修改。
(推荐教程:yii框架)
解决方法:
代码如下:
foreach($goods as $k => $v){ if(yourModel::updateAllCounters( ['goods_num' => $v], ['goods_id' => $k,'user_id' => $id] )) { continue;//如果已经更新,则跳过此次循环,到下一次 } $data[] = [ 'user_id' => $id, 'goods_id' => $k, 'goods_num' => $v, 'created_time' => $time, ]}
更多编程相关内容,请关注Gxlcms编程入门栏目!
yii2 怎么批量删除
需求:
向后台发送多条数据,其中一些数据已经存在记录,只需要对其部分字段的值进行修改。
(推荐教程:yii框架)
解决方法:
代码如下:
foreach($goods as $k => $v){ if(yourModel::updateAllCounters( ['goods_num' => $v], ['goods_id' => $k,'user_id' => $id] )) { continue;//如果已经更新,则跳过此次循环,到下一次 } $data[] = [ 'user_id' => $id, 'goods_id' => $k, 'goods_num' => $v, 'created_time' => $time, ]}
更多编程相关内容,请关注Gxlcms编程入门栏目!
YII连接数据库总是错误,请问谁有办法
1、看你数据库的参数配置是否正确(请确认参数没错)
2、看你的AdminUser类,里面有个tableName的方法:返回表名的。
3、你看看那个方法返回的表名是不是你数据库的表名,一致才行。
怎么查询SQL数据库中一行多列的数据中最大值?
1、下载phpStudy,并且按照步骤安装。
2、在www中安装YII2框架。
3、在config web.php 配置数据库设置。
4、输入数据库用户名和密码。
5、控制器写入数据库查询语句,并输出到视图。
6、视图view循环输出内容。
7、内容显示。