Yii 框架使用数据库(databases)的方法示例_php实例

来源:脚本之家  责任编辑:小易  

$datas=Article::model()->findAll();这个就是获取数据的抄样子了article是model的名称,foreach($datas as $data){echo $data->id;echo "";echo $data->name;echo $data->xx;}php中使用yii框架技术如袭何将mysql数据库中的内知容读出来并显示在页面上?(越详细越好道)www.zgxue.com防采集请勿采集本网。

本文实例讲述了Yii 框架使用数据库(databases)的方法。分享给大家供大家参考,具体如下:

配置数据库连接

1. Yii Yii是一个基于组件的高性能的PHP的框架,用于开发大规模Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主体化,I18N和L10N,Yii提供了今日Web

开始之前,请确保你已经安装了 PHP PDO 扩展和你所使用的数据库的 PDO 驱动(例如 MySQL 的 pdo_mysql)。 对于使用关系型数据库来讲,这是基本要求。

区别在于框架。 框架比较: 1 yii框架,美国华人开发的框架, 薛强,纯OOP框架。 2 thinkphp框架。 2 CI 轻量级框架,开发速度快,部署灵活。 3 cakephp 外国框架,重量级框架。 4 symfony(外国重量级框架); YII的老爸。 优势:框架可以节省我们5

驱动和扩展安装可用后,打开 config/db.php 修改里面的配置参数对应你的数据库配置。 该文件默认包含这些内容:

检查一下你的php.ini里面 extension=php_pdo.dll extension=php_sqlite.dll extension=php_pdo_sqlite.dll 开启了没有,没开启的话就去开启,然后检查一下你php.ini里面extension_dir路径下是否有这三个组件,比如我的路径就是E:/wamp/bin/php/p

<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii2basic', 'username' => 'root', 'password' => '', 'charset' => 'utf8',];

1.在配置项中定义: 12345'SESSION_TYPE' => 'Redis', //session保存类型'SESSION_PREFIX' => 'sess_', //session前缀'REDIS_HOST' => '127.0.0.1' //REDIS服务器地址'REDIS_PORT' => 6379, //REDIS连接端口号'SESSION_EXPIRE' => 3600, //SESSIO

config/db.php 是一个典型的基于文件的配置工具。 这个文件配置了数据库连接 yii\db\Connection 的创建和初始化参数, 应用的 SQL 查询正是基于这个数据库。

Yii容易学习和使用。只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言。 用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少。造就了Yii是最高效的开发框架之一。 Yii 具有高度的可重

上面配置的数据库连接可以在应用中通过 Yii::$app->db 表达式访问。

信息: config/db.php 将被包含在应用配置文件 config/web.php 中, 后者指定了整个应用如何初始化。 请参考配置章节了解更多信息。

如果想要使用 Yii 没有捆绑支持的数据库,你可以查看以下插件: Informix IBM DB2 Firebird

创建活动记录

创建一个继承自活动记录类的类 Country, 把它放在 models/Country.php 文件,去代表和读取 country 表的数据。

<?php namespace app\models; use yii\db\ActiveRecord; class Country extends ActiveRecord{}

这个 Country 类继承自 yii\db\ActiveRecord。你不用在里面写任何代码。 只需要像现在这样,Yii 就能根据类名去猜测对应的数据表名。

信息: 如果类名和数据表名不能直接对应, 可以覆写 tableName() 方法去显式指定相关表名。

使用 Country 类可以很容易地操作 country 表数据,就像这段代码:

use app\models\Country; // 获取 country 表的所有行并以 name 排序$countries = Country::find()->orderBy('name')->all(); // 获取主键为 “US” 的行$country = Country::findOne('US'); // 输出 “United States”echo $country->name; // 修改 name 为 “U.S.A.” 并在数据库中保存更改$country->name = 'U.S.A.';$country->save();

信息: 活动记录是面向对象、功能强大的访问和操作数据库数据的方式。你可以在活动记录章节了解更多信息。 除此之外你还可以使用另一种更原生的被称做数据访问对象的方法操作数据库数据。

创建动作

为了向最终用户显示国家数据,你需要创建一个操作。相比之前小节掌握的在 site 控制器中创建操作, 在这里为所有和国家有关的数据新建一个控制器更加合理。 新控制器名为 CountryController,并在其中创建一个 index 操作, 如下:

<?php namespace app\controllers; use yii\web\Controller;use yii\data\Pagination;use app\models\Country; class CountryController extends Controller{ public function actionIndex() { $query = Country::find(); $pagination = new Pagination([ 'defaultPageSize' => 5, 'totalCount' => $query->count(), ]); $countries = $query->orderBy('name') ->offset($pagination->offset) ->limit($pagination->limit) ->all(); return $this->render('index', [ 'countries' => $countries, 'pagination' => $pagination, ]); }}

把上面的代码保存在 controllers/CountryController.php 文件中。

index 操作调用了活动记录 Country::find() 方法,去生成查询语句并从 country 表中取回所有数据。 为了限定每个请求所返回的国家数量,查询在 yii\data\Pagination 对象的帮助下进行分页。 Pagination 对象的使命主要有两点: 为 SQL 查询语句设置 offsetlimit 从句, 确保每个请求只需返回一页数据(本例中每页是 5 行)。 在视图中显示一个由页码列表组成的分页器, 这点将在后面的段落中解释。

在代码末尾,index 操作渲染一个名为 index 的视图, 并传递国家数据和分页信息进去。

创建视图

views 目录下先创建一个名为 country 的子目录。 这个目录存储所有由 country 控制器渲染的视图。在 views/country 目录下 创建一个名为 index.php 的视图文件,内容如下:

<?phpuse yii\helpers\Html;use yii\widgets\LinkPager;?><h1>Countries</h1><ul><?php foreach ($countries as $country): ?> <li> <?= Html::encode("{$country->name} ({$country->code})") ?>: <?= $country->population ?> </li><?php endforeach; ?></ul> <?= LinkPager::widget(['pagination' => $pagination]) ?>

这个视图包含两部分用以显示国家数据。第一部分遍历国家数据并以无序 HTML 列表渲染出来。 第二部分使用 yii\widgets\LinkPager 去渲染从操作中传来的分页信息。 小部件 LinkPager 显示一个分页按钮的列表。 点击任何一个按钮都会跳转到对应的分页。

试运行

浏览器访问下面的 URL 看看能否工作:

http://hostname/index.php?r=country/index

 

首先你会看到显示着五个国家的列表页面。在国家下面,你还会看到一个包含四个按钮的分页器。 如果你点击按钮 “2”,将会跳转到显示另外五个国家的页面, 也就是第二页记录。如果观察仔细点你还会看到浏览器的 URL 变成了:

http://hostname/index.php?r=country/index&page=2

在这个场景里,Pagination 提供了为数据结果集分页的所有功能: 首先 Pagination 把 SELECT 的子查询 LIMIT 5 OFFSET 0 数据表示成第一页。 因此开头的五条数据会被取出并显示。 然后小部件 LinkPager 使用 Pagination::createUrl() 方法生成的 URL 去渲染翻页按钮。 URL 中包含必要的参数 page 才能查询不同的页面编号。 如果你点击按钮 “2”,将会发起一个路由为 country/index 的新请求。 Pagination 接收到 URL 中 的 page 参数把当前的页码设为 2。 新的数据库请求将会以 LIMIT 5 OFFSET 5 查询并显示

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

因为你Users Model的对应的表明没百改,在这个Users模型类里,有这样的方法:public static function tableName(){ return '{{%users1}}'; // users1是你的新表名}而且直度接执行Sql查询,好像不是这样用的吧?我一般版都是这样的Yii::$app->getDb()->createCommand($sql)->queryAll() Yii::$app->getDb()->createCommand($sql)->queryOne() Yii::$app->getDb()->createCommand($sql)->excute() ....区别你可以看看源代码的说明。(权Yii2上的用法,yii1.x应该差不多,你稍微改改就应该没问题)更多追问追答追问好像明白点了,Users类的表名应该怎么改呢?这个文件在哪里?UsersModel是我自己建的类,里面方法为空。追答这个放的地方一般在models这个目录下,文件名应该就叫Users一般用编辑器就可以追踪到了,比如netbeans的按CTRL+B就可以打开对应的文件追问我实在不知道users模型是如何把表名users记住的,甚到把框架文件全部替换为新的框架文件,再重建上述users模型和indexController查询users1,结果依然是查询users表.追答我上面已经说了,这个方法定义了模型对应的数据表public static function tableName(){}如果要研究个明白,可以看看框架源代码内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • yii的入口文件index.php中为什么会有这两句
  • php的yii框架中yiibase入口类的扩展写法示例
  • yii入门教程之目录结构、入口文件及路由设置
  • yii 框架使用gii生成代码操作示例
  • yii 框架使用forms操作详解
  • yii 框架应用(applications)操作实例详解
  • yii框架应用组件用法实例分析
  • yii框架小部件(widgets)用法实例详解
  • yii框架安装简明教程
  • yii 框架入口脚本示例分析
  • php 使用fopen函数创建、打开文件详解及实例代码
  • php的ajax简单实例
  • php date()格式mysql中插入datetime方法
  • laravel中命名路由的使用方法
  • php实现生成带二维码图片并强制下载功能
  • zf框架的filter过滤器使用示例
  • php安装xdebug/php安装pear/phpunit详解步骤(图)
  • thinkphp框架中使用memcached缓存数据的方法
  • 使用php-timeit估计php函数的执行时间
  • tp5递归 无限级分类详解
  • PHP中使用YII框架的问题
  • php中使用yii框架技术如何将mysql数据库中的内容读...
  • php中的yii框架,把后端数据库的数据赋值给前端模...
  • yii2.0框架默认为index.php怎么修改配置
  • yii框架如何访问api
  • YII框架和THINKPHP的区别是什么?
  • YII框架提示报错include(PDO.php) [<a href='funct...
  • php yii框架操作redis问题。可以获取到redis对象信...
  • PHP Yii2开发框架有什么优势好处
  • php中yii框架findByAttributes()怎么用呢?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例yii框架入门及常用技巧总结php优秀开发框架总结smarty模板入门基础教程php面向对象程序设计入门教程php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总php的yii框架中yiibase入口类的扩展写法示例yii入门教程之目录结构、入口文件及路由设置yii 框架使用gii生成代码操作示例yii 框架使用forms操作详解yii 框架应用(applications)操作实例详解yii框架应用组件用法实例分析yii框架小部件(widgets)用法实例详解yii框架安装简明教程yii 框架入口脚本示例分析php 使用fopen函数创建、打开文件详解及实例代码php的ajax简单实例php date()格式mysql中插入datetime方法laravel中命名路由的使用方法php实现生成带二维码图片并强制下载功能zf框架的filter过滤器使用示例php安装xdebug/php安装pear/phpunit详解步骤(图)thinkphp框架中使用memcached缓存数据的方法使用php-timeit估计php函数的执行时间tp5递归 无限级分类详解php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php从数组中删除元素的四种方法实ha0k 0.3 php 网页木马修改版thinkphp5框架结合mysql实现微信登录和自laravel5.1 框架表单验证操作实例详解yii框架中使用memcache的方法详解php微信公众账号开发之五个坑(二)php实现每日签到功能windows7下php开发环境搭建图文教程php将url地址转化为完整的a标签链接代码(php并发查询mysql的实例代码form自动提交实例讲解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved