thinkphp 添加查询条件:

if($keyword){
$condition = array();
$condition['username'] = array("like", "%".$keyword."%");
username这里想再添加另外一个字段,如mobile,怎么写?

thinkphp查询条件支持数组形式的。它会自动解析的。

就像你写的username条件一样,如果想额外增加条件,直接增加条件变量的数组成员就可以了。

例如需要增加mobile字段的条件。可以直接写:

$condition['mobile'] = '123456789';

如有疑问,可继续追问。

追问

if($keyword){
$condition = array();
$condition['username'] = array("like", "%".$keyword."%");
$condition['mobile'] = array("like", "%".$keyword."%");
这样是错误的!

追答

以上是官方文档的截图。

使用数组方式设置条件是允许的,你的情况应该是其他地方出错。

把报错信息发给我看一下。

追问

完整代码,按照这样的写法,输入username值或者mobile值搜索出来是空白的。

追答

确定数据库里有符合条件的数据吗?

你可以在计算总数那条语句中加fetchSql(true)方法。把执行的sql打印出来。

看一下sql是否正确,也可以拿着sql到数据库软件试一下。

另外,我看你的代码,你是不是希望查询keyword符合username或者mobile?

如果你直接使用上述条件数组的话。是要求username和mobile同时存在keyword才能查询出来,他们的关系是and(且),而不是or(或)。

如果你是要查询两个字段其中一个字段包含keyword即可。也就是or关系的话。

可以使用如下代码:

$condition['username|mobile'] = array("like", "%".$keyword."%");追问

还是空白。

追答

你首先要确定sql语句正确。按我上面的方法。把sql语句打印出来。

拿到数据库软件中测试一下。还要根据你的条件,确定数据库是否真的有符合条件的值。

如果没有任何一条数据符合条件,怎么可能有结果呢? 是吧?

我按照你的需要,做了一个测试数据表。sql语句以及结果如下,你参考一下:

案例数据表数据:

SQL语句与结果:

1、AND关系

SELECT * FROM `ceshi` where `username` LIKE '%123%' AND `mobile` LIKE '%123%';

由于使用了AND关系,必须要求username以及mobile都包含123的数据才被查出。

很显然,只有ID为2的数据符合条件。所以只查出一条。

2、OR关系

SELECT * FROM `ceshi` where `username` LIKE '%123%' OR `mobile` LIKE '%123%';

由于使用了OR关系,只要username或mobile其中一个字段包含123的数据就会被查出。

结果是查出2条数据。虽然ID为1的数据行中,username没有包含123。但是mobile中包含123的。OR关系就起到了作用。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网