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关系
由于使用了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关系就起到了作用。