$roomidd = $db->getOne("SELECT user FROM jzroom ");//数据库读出来的是
{"87":1,"174":1,"82":1} 这样的,因为后面要进行正则匹配,我怎么把{"87":1,"174":1,"82":1}变成这样 ‘{"87":1,"174":1,"82":1}‘,就是前后加个引号,双引号也可以,谢谢!
json_encode
谢谢,照您说的用json_encode转型真就解决了。再问个问题,我这代码只查询匹配数据库的符合条件的第一行,如果没匹配上就跳过去了,但数据库下面还有很多行符合条件又能匹配的啊,怎么办呢?
代码是这样的:
$roomInfo = $db->getOne("SELECT user,roomid FROM jz_room WHERE endtime= '0' AND user != 'null' AND user != '[]' ");
$userw = json_encode($roomInfo['user'],true);
$useidd = json_decode($connection->user["id"],true);
$str = $useidd;
if(preg_match ("/$str/",$userw))
{
return tip("你已登录", $connection);
}
@码哥子: 首先,我看到的是你写的sql语句不正确,null 应该是is 或者is not判断,不能用!=呦,你可以修改一下,再测试一下呦。我没有测试呦,不知道正确不正确。
@码哥子: 那个园豆是这么获得的,刚入园不久,不会弄。
@鱼的小步舞曲: 园豆注册就有的啊。
我不知道是不是我写得不规范,但SQL语句可以被执行,整段代码也能正常运行,只是不知道怎么逐行进行查询匹配
@码哥子: 从你给的表里面的数据库,应该倒数第4条是符合的,查不出来,要么是数据问题要么是代码问题,你把查询条件减少一点,看一下查询结果,逐步增加查询条件,排查错误。
@鱼的小步舞曲: 你也看到问题了,呵呵,现在第3条就被查询出来并进行匹配,但这条并不符合匹配,程序就跳过去了,下面的倒数第四条才是我需要的,但不会被提取出来匹配,怎么逐行进行查询匹配呢?
@码哥子: 你只查询endtime=0的数据,应该会看出问题所在
@鱼的小步舞曲: 不好意思,那张图是之前的问题贴的图,之前问题解决了,现在才发现不能逐行查询匹配。下图就会出现问题,第三条如果是ID为89的用户进入就会被匹配出来,进不了网站,但如果ID是87的用户就不会被匹配,照样进入网站,这代码只查询第一个符合条件的行
@码哥子: 好吧。第一次回帖就遇到这种事。
@码哥子: 麻烦关注一下我。
@鱼的小步舞曲: 好的,呵呵,有办法进行逐行查询匹配吗?
@码哥子: 我可以理解为,一条查询结束后,处理之后,再继续查询第二条数据,直到查询全部。如果是这样的场景,建议增加一个字段,作为查询过和未查询过的判断依据,例如is_used,1或0。这样持续查询就可以实现了,不过这样感觉是画蛇添足,为何不一次全部查询,循环处理呢?
@鱼的小步舞曲: 一次全部查询,循环处理,用什么语句来实现呢,我是新手,请多指教!
自己搞定,加个LIKE '%$useidd%'就可以了