我的数据库里面有个列里面有多个数字 user 列里面存储的是多个值 {"87":1,"174":7},我要读取“”里的值来,该怎么写 比如
if ($user= 87) {
act('over', '请重新提交', $connection);
请大神指教
什么意思哦?你是要根据条件去匹配字段里面的值符号要求的数据吗?
如果是这样,你可以用like语句啊
如果你是想查询出来的值,把“”里面的值全部解析出来
那么你可以对取出来的数据用正则表达式取匹配啊
是这样,我想做到的就是:查询jzroom表里面user列几个引号里面的值*(这个值是多个数据{"87":1,"174":1,"156":1.....}),再判断自己的userID是不是在里面,如果是在里面那么就执行act('over', '请重新提交', $connection);语句。比如自己的ID是87,user列里面也有87,那么就会执行下面的语句。我是初学者,还劳烦写个完整的语句,谢谢了!
@码哥子: 那你可以在执行的语句后面带条件where啊,where 用子查询到表jzroom里面用like去匹配user列
你要执行的语句 where (select userID FROM jzroom where userID like '%87%') is not null
@猴子哥:谢谢, 在您的指导下我是这样写的代码:
$roomzx = $db->getOne("SELECT user FROM jz_room WHERE endtime= '0' AND user != 'null' ");
$roomidd = $db->getOne("SELECT id FROM jz_user ");
file_put_contents('log.txt',$roomzx,FILE_APPEND);
file_put_contents('log.txt',$roomidd,FILE_APPEND);
if(preg_match ($roomidd,$roomzx)) {
return tip("您已登录", $connection);
}
log.txt显示也已经读取到了我需要的值:{"87":1,"174":1} 87,但是好像匹配不了,没执行if里面的语句。
数据库结构如图
@猴子哥 你这个是PHP写的吧?不会php,但是我想按照我说的逻辑干,应该不会有问题吧,只有匹配到数据后才执行需要执行的逻辑
@猴子哥: 好的,谢谢,估计现在问题就是出在if(preg_match ($roomidd,$roomzx)) 这个匹配语句不正确了,不知哪位高手能否指点一下
终于解决了,用$userw = json_encode($roomzx ['user'],true);后得到的数据就是加了双引号的 ‘’{"87":1,"174":1}‘’,就能进行匹配了