当前位置:首页 » 数据仓库 » tp框架数据库条件查询
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

tp框架数据库条件查询

发布时间: 2022-09-09 06:59:52

A. thinkphp 根据条件查数据库存在记录则修改 不存在则添加

$rs=D("table");
if($rs->where(array("id"=>$id,"cid"=>$cid))->count()){
//存在

}else{
//不存在

}

B. thinkphp 数据库查询查询我想查询一个值到某一个值之间的数据该怎么查

$map['dengji'] = array('BETWEEN', '0, 200');
D('Model')->where($map)->select();

C. php查询sql怎么加一个选择时间的条件

$advertisement=M('advertisement');
$time=date('Y-m-d');
$heig=strtotime($time);
$advertisements=$advertisement->order('iddesc')->where('over_time>'.$heig)->where(array('state1'=>0))->limit(1)->select();

我这是TP框架的 我数据库时间是Ymd的时间戳,这边查询一个比现在时间大的数据,前面time我是得到当前时间的Ymd,然后转换成时间戳,虽然不是你那样的原生sql,但是希望对你有帮助

D. tp框架怎么实现二叉树查询 如图,查询数据库中小明下面的所有人。到底下面多少人,不清楚。 代码如何实现

搞个无限级分类,数据结构如下

idparent_idname

10 小明

21小红

31小刚

42小紫

.....以此类推


$m=M('Table');
$data=$m->order('parent_id')->select();
$data=$this->tree($data,0);

//无限级分类
//更过mysql查询http://it-school.cn/mysql/mysql-tutorial.html
static$treeList=array();
staticpublicfunctiontree(&$data,$parentId,$count=1)
{
foreach($dataas$key=>$value){
if($value['parent_id']==$parentId){
$value['Count']=$count;
self::$treeList[]=$value;
unset($data[$key]);
self::tree($data,$value['id'],$count+1);
}
}
returnself::$treeList;
}

E. tp5如何跨数据库查询

如果是mysql里面两个不同的数据库,应该是可以直接使用 [数据库名称].[表名]来关联的。TP指定的数据库,是因为他要缓存这个数据库的表字段等。试试看行不行,测试通过: SELECT a.*,b.* FROM table1 a LEFT JOIN db2.table2 b ON a.id=b.id

F. thinkphp的数据库查询

SELECT*FROM((SELECT*FROMuserasis_mWHEREis_m.isMember='1')UNIONALL(SELECT*FROMuserasnot_isWHEREnot_is.isMember='0'ORDERBYRAND()LIMIT10))astORDERBYt.idDESCLIMIT10,20"

这是雏形,你可以进行优化。

拆分详解:

  1. (SELECT * FROM user as is_m WHERE is_m.isMember = '1') 这个括号中,是查询会员,这个不用多说,你应该明白,至于为什么要加别名,同表多次查询自然要加别名以区分;

  2. (SELECT * FROM user as not_is WHERE not_is.isMember = '0' ORDER BY RAND() LIMIT 10 )这个括号中,是查询非会员,其中ORDER BY RAND() LIMIT 10是关键,它的意思就是从中随机取十个结果;

  3. SELECT * FROM (会员 UNION ALL非会员) as t ORDER BY t.id DESC LIMIT 10,20。这里即用到了联合查询UNION ALL,也用到了子查询,把联合查询的结果作一个结果集,然后从中进行查询,查询这个结果集的时候,使用ORDER BY和LIMIT进行分页处理。

以上,就是该语句的详解了,当然,其中也需要你做一些处理。

比如要先进行判断会员数满没满三十个,满了则无需如此,直接使用会员,没满则计算出还差多少个,在查询非会员那里LIMIT 数字才好使用;

至于分页,这个又是另一个问题了,你应该知道怎么分页的。

G. php框架 laravel 多重条件查询。对数据库查询,在满足日期范围查询的同时在满足一个或几个条件查询。

laravel的where条件可以无限制加的,想加多少个加多少个的

$result=Model::whereIn(/*条件1*/)
->whereNotIn(/*条件2*/)
->whereBetween(/*条件3*/)
->where(/*条件4*/)
->orderBy()
->get()
//类似这样的,where条件可以接很多个,没有限制

H. thinkphp 数据库查询怎么查

thinkphp如何查询数据库?

数据库查询

ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询操作。

查询条件可以用于CURD等任何操作,作为where方法的参数传入即可。

ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。

查询方式

一、使用字符串作为查询条件

这是最传统的方式,但是安全性不高,例如:

1

2

$User = M("User"); // 实例化User对象

$User->where('type=1 AND status=1')->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE type=1 AND status=1

二、使用数组作为查询条件

1

2

3

4

5

$User = M("User"); // 实例化User对象

$condition['name'] = 'thinkphp';

$condition['status'] = 1;

// 把查询条件传入查询方法

$User->where($condition)->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE 'name'='thinkphp' AND status=1

如果进行多字段查询,那么字段之间的默认逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的逻辑判断,通过使用 _logic 定义查询逻辑:

1

2

3

4

5

6

$User = M("User"); // 实例化User对象

$condition['name'] = 'thinkphp';

$condition['account'] = 'thinkphp';

$condition['_logic'] = 'OR'; //定义查询逻辑

// 把查询条件传入查询方法

$User->where($condition)->select();

最后生成的SQL语句是

1

SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'


三、使用对象方式来查询 (这里以stdClass内置对象为例)

1

2

3

4

5

6

$User = M("User"); // 实例化User对象

// 定义查询条件

$condition = new stdClass();

$condition->name = 'thinkphp';

$condition->status= 1;

$User->where($condition)->select();

最后生成的SQL语句和上面一样

1

SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

使用对象方式查询和使用数组查询的效果是相同的,并且是可以互换的,大多数情况下,我们建议采用数组方式更加高效,后面我们会以数组方式为例来讲解具体的查询语言用法。

表达式查询

上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,并且可以用于数组或者对象方式的查询(下面仅以数组方式为例说明),查询表达式的使用格式:

1

$map['字段名'] = array('表达式','查询条件');

表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:


1

2

3

4

$map['id'] = array('eq',100); id = 100;

$map['id'] = array('egt',100);id >= 100

$map['name'] = array('like','thinkphp%'); name like 'thinkphp%' 模糊查询

$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')

本文来自ThinkPHP框架技术文章栏目:http://www.php.cn/phpkj/thinkphp/

以上就是thinkphp如何查询数据库的详细内容,更多请关注php中文网其它相关文章!

I. ThinkPHP中查询数据库where()中的条件必须包含主键值吗

不用的哈,用什么PHP框架,就要多看这个框架的手册。

http://document.thinkphp.cn/manual_3_2.html#where,

就如此题来说,你传递过来的id值,就是表的主键。

pid一般是为父键的意思,$catemodel->where('pid=%d',$_GET['id'])->select();

查询的是这个id所对应子集的。

楼上所说这种,有点曲解楼主的意思。楼主的意思,估计就是子集没数据的缘故。

J. TP5框架如何用Db类查询这条sql语句

你这段sql,前面那个括号是没必要的,全部是and

Db::name('goods')->where('id',1)->where('price',1)
->whereIn('status',[0,2]);

这个写法可以达到你要的效果

也可以通过where嵌套,生成出来 就是你写的那种

Db::name('goods')->where('id',1)->where('price',1)
->where(function($db){
return$db->where('status',1)->whereOr('status',2);
});

希望对你有帮