『壹』 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 如何定义数据库连接
在saas中,多租户数据库分库管理时常常需要我们自定义数据库链接,并且需要支持在框架加载后再调用数据库连接。
Yii2 如何定义数据库连接?
要注意的是:
即除了使用\Yii::app−>set()外,还需要再多使用下面一句话:\Yii:: app−>set()外,还需要再多使用下面一句话:\Yii::app->$database->open();
因为在框架加载后再调用时,yii本身并不会帮我们打开连接。
<?php/**
* User: chenlb
*/namespace backend\moles\monitorMysql\controllers\show;class AllDatabases extends \yii\base\Action{
private static $_conn = []; public function run()
{
// Create Test DB Connection
$db = $this->getDb('数据库名称');
var_mp($db->getSchema()->getTableSchema('log')->columns['id']->isPrimaryKey); exit;
} /**
* 得到数据库连接
*/
public function getDb($database)
{
if(!isset(self::$_conn[$database])){ $connInfo = [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=HOST_IP;port=3307;dbname='.$database, 'username' => 'username', 'password' => 'password', 'charset' => 'utf8'
];
\Yii::$app->set($database, $connInfo);
\Yii::$app->$database->open(); self::$_conn[$database] = \Yii::$app->$database;
} return self::$_conn[$database];
}
}
『叁』 如何用yii2 ActiveRecord在处理mysql所有表insert把uuid自动主键
如何用yii2 ActiveRecord在处理mysql所有表insert把uuid自动主键
就是用Mysql自带的这个
select uuid();
在ActiveRecord里该如何处理
<?php
$model = new xx();
$model->id = 'uuid()';
...
$model->save();
试了这种方法,显然上面这种方法是不行的,有没有其他的处理方式
『肆』 如何查看yii2数据库是否连成功
第一查看config里面的数据库配置 是否选择的是mysql 第二数据库的账号密码是否正确
『伍』 Yii2如何实现跨mysql数据库关联查询排序
// 默认是这样的public static function tableName(){ return 'user_stat';} public static function getDb(){ return Yii::$app->get('dbStat');}// 为了提高代码稳定性,可以这样写public static function tableName(){ preg_match("/dbname=([^;]+)/i", static::getDb()->dsn, $matches); return $matches[1].'.user_stat';} public static function getDb(){ return Yii::$app->get('dbStat');}
『陆』 yii2数据库查询
执行:
Yii::$app->getDb()->createCommand("Your SQL")->execute();
查询:
Yii::$app->getDb()->createCommand("Your SQL")->queryAll();
其他:
Yii::$app->getDb()->createCommand("Your SQL")->xxx
『柒』 yii2在一次mysql查询中,用alter add一个新字段,紧接select *,会出现字段不存在的问题
修改完表结构不能立即应用,因为数据库的定义语句执行需要有一定的时间耗损。
『捌』 yii2怎么配置common/main-local.php中配置mysql,mongodb,redis
Composer是一个用于PHP包管理的工具。
有了Composer,PHP开发的包管理就变得异常简单。
对于PHP“悠久”的历史来说,包管理工具显得姗姗来迟。12年3月推出alpha版本,直到今年(2016年)3月才推出第一个beta版本,不过不管怎么说,PHP终于还是有包管理了,这是好事。但是可能因为某些原因,Composer在国内的使用并不是非常方便。
『玖』 yii2怎么删除数据库的一条数据
$customer=Customer::findOne(123);
$customer->delete();
快速、安全、专业的 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”