Thinkphp连接数据库的学习笔记

学习到 thinkphp 建立一个小实例,就从网上找了一篇文章,本身 thinkphp 是有官网实例的,但老是出错,下面这篇文章还不错,算是最基础的了,从配置文件到连接数据库,然后再到制作模板,读取模板,还有新建 mysql 数据库,都比较详细,thinkphp 底层核心文件不变,如果刚学习可以参照着学习一下。
测试所在系统:WIN7、XP
测试工具:zend studio9
运行平台:WAMP
数据库:mysql
TP测试版本:3.0(强调:3.0之前版本在配置上有很大不同)
1. 配置入口文件
入口文件:与ThinkPHP在同一级别目录下
命名:index.php
index.php
<?php 
define( 'THINK_PATH', './ThinkPHP/' ); 
define( 'APP_PATH', './web3.0/' ); 
define( 'APP_NAME', 'web3.0' ); 
require THINK_PATH.'ThinkPHP.php'; 
?> 
运行结果:看到欢迎界面^_^ Hello,欢迎使用ThinkPHP既配置入口成功。
2. 配置数据库链接方式
文件路径:盘符:\服务器路径\TP3.0WEb\web3.0\Conf
打开config.php文件并修改成以下内容:
<?php 
return array( 
 //'配置项'=>'配置值' 
 'DB_TYPE'=>'mysql', 
 'DB_HOST'=>'localhost', 
 'DB_NAME'=>'myapp',     // 数据库名为myapp 
 'DB_USER'=>'root', 
 'DB_PWD'=>'', 
 'DB_PORT'=>'3306', 
 'DB_PREFIX'=>'think_', 
 // 由于最简单的链接方式,故缩略些功能 
); 
?> 
数据库名称是myapp,mysql操作方式如下:
<1>.建数据库
CREATE DATABASE `myapp` ;
<2>.建数据表(think_form既是数据表的名称)
CREATE TABLE `think_form` ( 
`id` smallint(4) unsigned NOT NULL auto_increment, 
`title` varchar(255) NOT NULL, 
`content` varchar(255) NOT NULL, 
`create_time` int(11) unsigned NOT NULL, 
`update_time` int(11) unsigned NOT NULL, 
`status` tinyint(1) unsigned NOT NULL, 
`email` varchar(50) NOT NULL, 
PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ; 
<3>.插入数据
INSERT INTO `think_form` (`id`, `title`, `content`, `create_time`, `update_time`, `status`, `email`) VALUES
(1, '这是测试数据', 'dfdf', 1212724876, 0, 1, 'dddd@ddd.com')
3. 配置模块文件
文件路径:激活入口文件后自动生成的文件,此处文件名是web3.0
EG:盘符:\服务器路径\TP3.0WEb\web3.0\Lib\Action\IndexAction.class.php
打开IndexAction.class.php文件,并修改成如下内容:
<?php 
// 本类由系统自动生成,仅供测试用途 
class IndexAction extends Action { 
 public function index() 
 { 
  $form = D( 'Form' )->findall();    // 推荐不要使用封装好的数据库查询方法,细节日后更新 
  dump( $form ); 
  //$this->display(); 
 } 

?> 
4.配置数据库查询语句文件
文件路径:盘符:\服务器路径\TP3.0WEb\web3.0\Lib\Model
在该文件下建立一个模板文件(不知道这么称对不对)FormModel.class.php
->盘符:\服务器路径\TP3.0WEb\web3.0\Lib\Model\FormModel.class.php
<?php 
class FormModel extends Model 

 public function findall() 
 { 
  $sql = 'SELECT `title` FROM think_form'; 
  return $this->query( $sql ); 
 } 

?> 
总结:
创建两个文件:入口文件index.php和数据库模板文件FormModel.class.php
修改两个文件:config.php和IndexAction.class.php
最后 http://localhost/TP3.0WEb/index.php/index/index 查看结果。
注明:数据库连接方法仅说明配置和实现的方法,没有说明方法的解释。详细日后更新。
附加:实现MVC方法实现数据库数据提取并显示在html页面中。
5. 建立数据显示模板(html中部分模板替换)
文件路径:盘符:\服务器路径\TP3.0WEb\web3.0\Tpl
在Tpl目录下建立Index(I是大写)文件夹,然后再该文件夹下再建一个index.html(i是小写)文件
->盘符:\服务器路径\TP3.0WEb\web3.0\Tpl\Index\index.html
强调:在2.0中需要在Tpl目录下建立Default文件夹然后再建立Index文件夹,并在Index文件夹下再建立index.html才算配置完毕
在index.html中添加以下内容:
<html> 
<head> 
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 <title>{$title}</title> 
</head> 
 
<body> 
 {$title} 
</body> 
</html> 
运行后可以看见{$title}的内容被替换了

6.修改步骤4的内容,路径不变。

文件路径:盘符:\服务器路径\TP3.0WEb\web3.0\Lib\Model
将FormModel.class.php模板文件中的内容改成如下:
<?php 
// 本类由系统自动生成,仅供测试用途 
class IndexAction extends Action { 
 public function index() 
 { 
  //$form = D( 'Form' )->findall();    上下都可以使用 
  $form = M( 'Form' )->select(); 
  dump( $form ); 
  //$this->assign( 'title', $form[0]["title"] );    两种方法都一样 
  $this->title = $form[0]["title"]; 
  $this->display();                // 要在index。html中显示内容必须打开display,然后通过对应的名称和路径实现模板替换 
 } 

?> 

连接数据库用法示例

惯例配置文件:ThinkPHP/conf/convention.php

(1)在配置文件中填写配置信息(配置文件:“./xmall/conf/config.php”):

示例:

<?php
return array(
 //'配置项'=>'配置值'
 /* 数据库设置 */
'DB_TYPE'       => 'mysql',     // 数据库类型
'DB_HOST'       => 'localhost', // 服务器地址
'DB_NAME'       => 'xmall',      // 数据库名
'DB_USER'       => 'root',      // 用户名
'DB_PWD'=> '123',    // 密码
'DB_PORT'       => '3306',      // 端口
'DB_PREFIX'     => 'think_',    // 数据库表前缀   
'DB_FIELDTYPE_CHECK'    => false,       // 是否进行字段类型检查   
'DB_FIELDS_CACHE'       => true,// 启用字段缓存   
'DB_CHARSET'    => 'utf8',      // 数据库编码默认采用utf8
);
?>

(2)创建表:

CREATE TABLE `think_user` (
    `id` int(11) DEFAULT NULL,
    `name` varchar(30) DEFAULT NULL,
    `pwd` varchar(20) DEFAULT NULL
) ENGINE=InnoDB;
 
(3) 执行数据插入操作在lib/Action下修改IndexAction.class.php文件,内容如下:

<?php
class IndexAction extends Action{
 function index(){
   public function index(){
    $data=array(
     "id"=>"1",
     "name="=>"liuning",
     "pwd"=>"asd123"
    );
    M("user")->add($data);
  }
 }
}
?>

(4)执行http://localhost/xmall/index.php,数据库中就会有新的记录生成;

时间: 2024-11-08 17:59:26

Thinkphp连接数据库的学习笔记的相关文章

ThinkPHP php 框架学习笔记_php技巧

花了两个多钟在看 ThinkPHP 框架,不想太过深入的知道它的所有高深理论.单纯想知道怎么可以用起来,可以快捷的搭建一个网站.所以是有选择的看,二个钟后还是一头雾水.于是决定改变学习策略,上官方论坛看其它高人写的民间教程,果然比官方的通俗易懂多了.http://bbs.thinkphp.cn/forumdisplay.php?fid=6 (官方论坛) ThinkPHP 有很多函数通过参数拼凑的方式来组合SQL,如下:$list = $test->findall('',$fields,'id d

thinkphp学习笔记9—自动加载

原文:thinkphp学习笔记9-自动加载 1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/

thinkphp学习笔记10—看不懂的路由规则

原文:thinkphp学习笔记10-看不懂的路由规则 路由这部分貌似在实际工作中没有怎么设计过,只是在用默认的设置,在手册里面看到部分,艰涩难懂.   1.路由定义 要使用路由功能需要支持PATH_INFO,PATH_INFO是什么呢?手册中提到"要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能)," , url支持path_info,不是apache要支持path_info么,度娘讲的还算清楚一点,见下文: p

thinkphp学习笔记6—url模式

原文:thinkphp学习笔记6-url模式 入口文件是应用的唯一入口,因为可以多入口,每个应用可以对应一个入口文件,系统会从rul参数中解析当前请求的模块,控制器,操作.ThinkPHP是区分大小写的,考虑到linux是区分大小写的,所以在ThinkPHP中模块,控制器,模型等都是区分大小写的,并且使用驼峰命名规则. 如果我们直接访问入口文件index.php,url中没有给出模块,控制器,操作,系统会默认访问Home模块下的Index控制器下的index操作,因此下面的两种访问方法得到的结果

thinkphp学习笔记4—眼花缭乱的配置

原文:thinkphp学习笔记4-眼花缭乱的配置   1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展配置>动态配置,所以后面的配置权限要大于前面的,因为后面的配置会覆盖前面同名配置,同事会生辰配置缓存文件无需重复解析,减小开销. 惯例配置:在惯例配置内对大多数常用参数进行默认配置,因为惯例配置最先加载,优先级别最低,如果不需要做特殊配置的话,完全可以保持默认值,惯例配置位于ThinkPHP/Con

thinkphp学习笔记5—模块化设计

原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,

thinkphp学习笔记8—命名空间

原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间的路径和类库文件的目录一致,就可以实现类的自动加载,例如Org\Util\File类的定义为 namespace Org\Util; class File { } 其所在的路径是ThinkPHP/Library/Org/Util/File.class.php,我们实例化该类写法如下: $class

thinkphp学习笔记3—项目编译和调试模式

原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并缓存,第二次运行时直接载入编译缓存,这样省去一些IO开销,加快执行速度.并且在3.0以上的版本中海做了一些优化: 1.合并和兴编译缓存和项目编译缓存,不再生成两个缓存文件 2.直接对本地环境生成设置和常量定义减少环境判断 3.编译缓存可以直接替换框架入口甚至项目入口,甚至脱离框架独立运行 4.通过参

thinkphp学习笔记7—多层MVC

原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层等不同的模型层可以在模块目录下创建Model,Logic,Service目录,把对用户表的所有模型操作分成3层. 1.Model/UserModel用于定义数据相关的自动验证,自动完成和数据存取接口 2.Logic/UserLogical用于定义用户相关的业务逻辑 3.Service/UserSer