tp框架
a、通过 echo 等PHP原生的输出方式在页面中输出
b、通过display方法输出
想分配变量可以使用assign方法
class IndexAction extends Action {
public function index(){
$this->display();//要在Tpl建一个Index文件,因为Index类要与文件名字相同;
}
public function add(){
$name="龙";
$this->assign('myname',$name);//assign是action的方法
$this->display();
}
}
Thinkphp 3的模型使用:
在index方法中写:
通过new Model('表名')生成model实例
可以通过对象对数据库操作
class IndexAction extends Action {
public function index(){
$m=new Model('News');//news是数据表名
$arr=$m->select();//select 的查询方法
$name=$arr[0]['NewId'];
$this->assign('myid',$name);
$this->display();
}
}
在写这个对数据操作之前,要连接数据库,在配置cofig文件配置数据库连接:
第一种方式:
'DB_TYPE'=>'mysql', //设置数据库类型
'DB_HOST'=>'localhost',//设置主机
'DB_NAME'=>'newsdb',//设置数据库名
'DB_USER'=>'root', //设置用户名
'DB_PWD'=>'123456', //设置密码
'DB_PORT'=>'3306', //设置端口号
'DB_PREFIX'=>'', //设置表前缀
上面一种方式比较麻烦所以一般用下面的方式:
第二种方式:
'DB_DSN'=>'mysql://root:123456@localhost:3306/newsdb',//使用DNS方式配置数据库信息
但是:如果两种方式都存在的话,是以dsn方式为优先
还有一种简单实用模型的方式:
M()=new Model();
$arr=$m->select();
使用模型的实例可以对数据库进行操作,操作的工作一般是对数据库进行增删改查 CURD
增 -C Create $m->add()
$m=new Model('News');
$m->字段名=值;
.....
$m->add();
返回值是新增的id号;
如果:
$m=new Model('News');
$m->NewTitle='fsd';
$m->NewKeyWord='ada';
$m->add();
删 -D Detele $m->delete();
格式:1.$m->delete(ID号);
2.$m->where("数据id=?")>delete();//传的参数不是主键的时候,用这个where方法
返回值是受影响行数
如
$m=M('News');
1. $m->delete(2);
2. $m->where('NewId=2')->delete();
改 -U Update $m->save();
$m=M('News');
$data['NewId']=1;//设置修改的id
$data['NewTitle']='修改的内容';//设置修改字段的内容
$count=$m->save($data);
返回值是受影响行数:echo $count;
查 -R Read $m->select(),$m->find(),$m->getField(字段名);
$m->select():
$m=new Model('News');
$arr=$m->select();//获取所有数据,以数组形式返回
$m->find():
$m=new Model('News');
$arr=$m->find();//获取单条数据,当find()括号为空的时候查询的id但是第一个id,当find($id)当当$id有值事,只查询该查询的id的一条数据;
一、普通查询方式
a、字符串
$arr=$m->$arr=$m->where("NewId=13 and NewTitle='fsd'")->find();
b、数组
$data['NewId']=10;
$data['NewTitle']='asdasasd';
$arr=$m->where($data)->find();
注意:这种方式默认是and的关系,如果使用or关系,需要添加数组值
$data['NewId']=10;
$data['NewTitle']='asdasasd';
$data['_logic']='or';
二、表达式查询方式
$data['NewId']=array('LT',6);
$arr=$m->where($data)->select();
EQ 等于
NEQ不等于
GT 大于
EGT大于等于
LT 小于
ELT小于等于
LIKE 模糊查询
data['NewTitle']=array('like','%fsd%');
$arr=$m->where($data)->select();
NOTLIKE(模糊查询取反)
$data['NewTitle']=array('notlike','%fsd%'); //notlike中间没有空格
$arr=$m->where($data)->select();
注意:如果一个字段要匹配多个通配符
$data['NewTitle']=array('like',array('%ge%','%2%','%五%'),'and');//如果没有第三个值,默认关系是or关系
$arr=$m->where($data)->select();
BETWEEN(取数据条的范围)
$data['NewId']=array('between',array(5,12));
arr=$m->where($data)->select();
sql结果:SELECT * FROM `news` WHERE ( (`NewId` BETWEEN 5 AND 12 ) );
$data['NewId']=array('not between',array(5,12));//注意,not 和 between中间一定要有空格(取反数据条的范围)
arr=$m->where($data)->select();
sql结果:SELECT * FROM `news` WHERE ( (`NewId` NOT BETWEEN 5 AND 12 ) )
IN
$data['NewId']=array('in',array(4,6,7));
$arr=$m->where($data)->select();
sql结果:SELECT * FROM `news` WHERE ( `NewId` IN (4,6,7) )
$data['NewId']=array('not in',array(4,6,7));
$arr=$m->where($data)->select();
sql结果:SELECT * FROM `news` WHERE ( `NewId` NOT IN (4,6,7)
三:区间查询
$data['NewId']=array(array('gt',10),array('lt',12));//取newid大于10和者小于12(在默认的是and);
sql结果:SELECT * FROM `news` WHERE ( (`NewId` > 10) AND (`NewId` < 12) )
如果要去‘或’的在后面加 'or'
$data['NewId']=array(array('gt',10),array('lt',12),'or') //取newid大于10或者小于12
sql结果:SELECT * FROM `news` WHERE ( (`NewId` > 10) OR (`NewId` < 12) )
$data['name']=array(array('like','%2%'),array('like','%五%'),'gege','or');//默认是and的。所以在查询“或”就不写and的
sql结果:SELECT * FROM `news` WHERE ( (`NewTitle` LIKE '%fsd%') OR (`NewTitle` LIKE '%fa%') OR (`NewTitle` = 'adadd')
四、统计查询
count //获取个数
$data['NewTitle']='fsd';
$c=$m->where($data)->count();
echo $c;
sql结果:SELECT COUNT(*) AS tp_count FROM `news` WHERE ( `NewTitle` = 'fsd' )
max //获取最大数
$max=$m->max(NewId);
echo $max;
sql结果:SELECT MAX(NewId) AS tp_max FROM `news` LIMIT 1
min //获取最小数
$min=$m->min(NewId);
echo $min;
sql结果:SELECT MIN(NewId) AS tp_min FROM `news` LIMIT 1
avg //获取平均数
$avg=$m->avg(NewId);
echo $avg;
sql结果:SELECT AVG(NewId) AS tp_avg FROM `news` LIMIT 1
sum //获取总和
$sum=$m->sum(NewId);
echo $sum;
sql结果:SELECT SUM(NewId) AS tp_sum FROM `news` LIMIT 1
五、SQL直接查询(写一些复杂的sql语句,或者是忘记方法忘记了!!)
a、query 主要数处理读取数据的
成功返回数据的结果集
失败返回boolean false
$m=M();//不要写表明,给一个空表的实例化
$result=$m->query("select * from t_user where id >50");
var_dump($result);
b、execute 用于更新个写入操作
成功返回影响行数
失败返回boolean false
$m=M();
$result=$m->execute("insert into news(`NewTitle`) values('ztz3')");
var_dump($result);
$m->getField(字段名):
getField(字段名)//获取一个具体的字段值
$m=new Model('News');
$arr=$m->where("数据id=?")->getField('字段名');
在查询时候用数组
$m=M('News');
$arr=$m->select();
$this->assign('data',$arr);
$this->display();
模板可以遍历数组
<volist name='data' id='vo'>
<{$vo.NewId}>--<{$vo.NewTitle}>--<{$vo.NewKeyWord}>--<{$vo.NewAuthor}>--<{$vo.NewContent}>--<{$vo.NewDateTime}><br/>
</volist>
注意:在配置数据之前打开调试模式,这样能够快速的的找到自己的代码错误
步骤:
-
首先在你已经部署好了ThinkPHP的项目目录
-
然后注意是在入口文件开启调试模式,在入口文件index.php 中写入一下代码define(‘APP_DEBUG’,true); 首先删除Runtime目录 ,然后再次运行一下,你会发现runtime目录下面的~runtime.php 文件没有了,说明你的调试模式开启成功了
-
之所以这个~runtime.php文件删除 ,这个文件是编译后的文件 会有缓存,所以在调试模式期间我们不用担心因为缓存而造成其他错误
-
trace页面的也是我们开发者获取错误信息的而一个途径,所以我们需要开启trace页面,在THinkPHp3.0版本中trace页面是默认没有开启的,需要我们手动 的在项目配置文件中添加
‘SHOW_PAGE_TRACE’ =>true, //显示页面Trace信息
想要看看trace信息是否开启了,只要我们在 IndexAction.class.php 中的index方
法中加上$this->display();
-
然后再次运行如果你看到了如下界面,说明你的调试模式,以及trace 以及开启了

浙公网安备 33010602011771号