tp框架_thinkphp

分享到:

  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>

注意:在配置数据之前打开调试模式,这样能够快速的的找到自己的代码错误

  步骤:

  1. 首先在你已经部署好了ThinkPHP的项目目录

    昵    称:
    验证码:

    相关文档: