首先, 在本地服务器中新建项目APP,依据第一讲中的步骤配置好thinkphp,这里为了测试方便,不分前台和后台模块,统一把模块路径设为'./APP/'。
1、新建数据库myapp,以及数据库表think_form;
2、在配置文件APP/Conf/config.php中写入:
<?php
return array(
//'配置项'=>'配置值'
'DB_TYPE'   => 'mysql', // 数据库类型
'DB_HOST'   => '127.0.0.1', // 服务器地址
'DB_NAME'   => 'myapp', // 数据库名
'DB_USER'   => 'root', // 用户名
'DB_PWD'    => '', // 密码
'DB_PORT'   => '3306', // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀
);
?>
其中端口为字符串需要加引号,之前把3306看成int数据类型,结果一直搞不定;
3、在控制器APP/Lib/IndexAction.class.php中写入:
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
    public function index(){
$m=new Model('Form');
$arr=$m->select();
var_dump($arr[0]['title']);
    }
}
?>
注:上面的语句具体解释为:$m=new Model(数据库表后缀名);后缀名首字母大小不限。注意只能是数据库表后缀名,不能是完整的数据库表名,否则读取数据失败,显示数据为null。也可以采用$m=M(数据库表后缀名);或者$m=D(数据库表后缀名);
最后,在浏览器中运行http://127.0.0.1/APP/index.php/Index/index,如果成功,即可看到数据字段的数据。
再注:之前连接时在入口文件内没有加入define('APP_DEBUG', true);结果数据库始终读取失败,而加了之后忽然成功了,再次注释掉也可以读取。难道说这一道程序是必须的?搞不懂情况?反正thinkphp操作超蛋疼。
4、上面的操作基本可以读取数据库了,但对于MVC要把控制器C和视图V联系,还需要再加一道工序:
(1)在控制器APP/Lib/IndexAction.class.php中加入:
$this->assign('data',$arr[0]['title']);
$this->display();//此方法为在视图V中输出显示数据的必要条件。
(2)在APP/Tpl目录中新建Index目录(由于控制器中的类名为IndexAction ,此处必须为Index,如果要改成其他目录名,首先要把IndexAction类的Index改成其他字符串(首字母必须大写),文件名改为:目标字符串(如Str)+Action.class.php,如果要建立此控制器的视图,则要在Tpl目录下创建目录名为Str的目录,再在目录中创建文件),再在Index目录下新建index.html,写入HTML语句,加入{$data}变量(因为在控制器中通过assign方法为$data进行了定义和赋值,想分配变量可以使用assign方法)。
在浏览器中运行http://127.0.0.1/APP/index.php/Index/index,如果成功,即可看到数据字段的数据。
总之,thinkphp连接数据库超蛋疼!!记得加入define('APP_DEBUG', true);防止麻烦出现。
 
附1:
url的4种访问方式          //重点!
1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2
2.普通模式
http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2
3.REWRITE模式
http://域名/项目名/模块名/方法名/键1/值1/键2/值2
4.兼容模式
http://域名/项目名/入口文件?s=模块名/方法名/键1/值1/键2/值2

http://127.0.0.1/APP/index.php/Index/index为第一种。 
 
附2:
控制器数据库操作CURD命令:
增 -C Create $m->add()
删 -D Delete $m->delete()
改 -U Update $m->save()
查 -R Read   $m->select()
 
附3:
模型遍历数组方法:
控制器的语句:public function index(){
$m=new Model('Form'); //$m=new Model(数据库表后缀名);实例化模型
$arr=$m->select();
//var_dump($arr[0]['title']);
//$name='ken';
//$this->assign('data',$name);
$this->assign('data',$arr);
$this->display();
    }
视图V的语句:
<h1>
   <volist name='data' id='vo'>
{$vo.id}<br>
{$vo.title}<br>
   </volist>
   </h1>
<volist>标签是模型遍历数组的关键,属性name为控制器中接收过来的后台变量,id为前台输出的实例对象变量。

thinkphp学习简易教程(二) thinkphp连接读取MySQL数据库的更多相关文章

  1. thinkphp学习简易教程(一) thinkphp创建项目

    1.在本地服务器根目录下创建项目目录,如命名为app: 2.把thinkphp的压缩包解压到与项目同级目录下,如app是放在目录APP下面,即项目目录路径为'APP/app/',则thinkphp应解 ...

  2. Ocelot简易教程(七)之配置文件数据库存储插件源码解析

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9852711.html 上篇文章给大家分享了如何集成我写的一个Ocelot扩展插件把Ocelot的配置存储 ...

  3. linux学习之centos(三):mysql数据库的安装和配置

    前言:mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库, ...

  4. 利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

    登录界面 <body><form action="login1.php" method="post"><div>用户名:&l ...

  5. Jmeter配置通过SSH连接的mysql数据库

    jmeter连接配置mysql数据库时,如果数据库服务器没有通过ssh连接,则只需要添加配置相应的jdbc参数就可以了.如果数据库服务器是通过SSH连接的,则需要通过中间远程连接工具来登录,此处使用的 ...

  6. jsp页面直接读取mysql数据库数据显示

    jsp页面直接读取mysql数据库数据显示: <%@page import="java.sql.ResultSet"%> <%@page import=" ...

  7. PHP连接局域网MYSQL数据库的简单实例

    PHP连接局域网MYSQL数据库的简单实例 [php] view plaincopy <?PHP /** * php连接mysql数据库 * by www.jbxue.com */ $conn= ...

  8. 连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,

    连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...

  9. 读取mysql数据库的数据,转为json格式

    # coding=utf-8 ''' Created on 2016-10-26 @author: Jennifer Project:读取mysql数据库的数据,转为json格式 ''' import ...

随机推荐

  1. 《Entity Framework 6 Recipes》中文翻译系列 (34) ------ 第六章 继承与建模高级应用之多条件与QueryView

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-10  创建一个多条件过滤 问题 你想使用多个条件为实体过滤表中的行. 解决方案 ...

  2. DataTable转Entity(Emit版)

    public static List<T> ToList<T>(DataTable dt)        {            List<T> list = n ...

  3. java 成长之路

    分享总结 title: java 成长之路 tags: grammar_cjkRuby: true 经验差异 1-3年 要求 建议 3-5年 建议 5年+ 经验差异 最近一年比较忙,经历了创业公司的倒 ...

  4. 08. Web大前端时代之:HTML5+CSS3入门系列 ~ QQ空间时间轴

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 大前端系列,主要就是使用CSS3.0来实现,注释我已经打 ...

  5. 白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现

    离去年“马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改 ...

  6. floating IP 原理分析 - 每天5分钟玩转 OpenStack(107)

    上一节我们通过 Web UI 创建为 cirros-vm3 分配了浮动 IP,今天将分析其工作原理. 首先查看 router 的 interface 配置: 可以看到,floating IP 已经配置 ...

  7. 应用程序框架实战十一:创建VS解决方案与程序集

    上一篇,介绍了开发环境需要的工具和版本,本篇将动手创建VS解决方案. 对于本系列文章提供的示例,我想通过两种途径来演示,一种是单元测试,另外为了能更直观的看到效果,还会提供一个用户界面来展示.为了不分 ...

  8. 高级javascript---变量作用域

    变量作用域 (JavaScript) JavaScript 有两个范围:全局和局部. 在函数定义之外声明的变量是全局变量,它的值可在整个程序中访问和修改. 在函数定义内声明的变量是局部变量. 每当执行 ...

  9. 【记录】vmware fusion 7 windows 10 unidentified network

    今天在 vmware fusion 7 中,使用 windows 10 时,突然报出一个错误(忘记截图了),当时就要求强制重启系统,也没怎么在意,但是重启之后,发现 windows 10 居然不能联网 ...

  10. Android各类权限意思祥解

    1. android.permission.ACCESS_CHECKIN_PROPERTIES    允许读写访问”properties”表在 checkin数据库中,可以修改值上传 2. andro ...