PHP 板


LINE

看板 PHP  RSS
小弟现在有个问题想请问一下各位先进 有张 table table name : projects projects.code 如下: 11&22 11&22|22&33 92&71|22&92|55&33 我有18组号码,分别要去找出这栏位里面有符合的 例如号码是 11 , 22 , 34 这样的话只要是 11&22 or 22&34 or 11&34 都符合 「|」 是分隔符号,被它区分的只要有一组符合就可以了 例如: 11&22 : O 22&99 : X 11&22|22&33 : O 92&71|22&92|55&33 : X 我的写法是这样: <?php //table name : projects //projects.code 如下: //11&22 //11&22|22&33 //92&71|22&92|55&33 $aCodes = array(11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 21, 31, 41, 51, 61, 71, 81, 91); $sRegExp = " `projects.type` like '1' "; $sql = " (1 = 2) "; foreach ($aCodes as $iKey1 => $sValue1) { foreach ($aCodes as $iKey2 => $sValue2) { if ($iKey1 != $iKey2 ) { $sql .= " OR "; $sql .= ' (`projects.code` ' . ' REGEXP "^.*' . $sValue1 . '&' . $sValue2 . '.*$") '; } } } $sRegExp = ' AND( '.$sql.' )'; $this->oDB->query( "UPDATE `projects` SET `updatetime`='".date("Y-m-d H:i:s") ."' WHERE $sRegExp " ); ?> mysql: UPDATE `projects` SET `updatetime`='".date("Y-m-d H:i:s") WHERE `projects.type` like '1' AND ( 1=2 OR REGEXP "^.*11&22*$" OR REGEXP "^.*11&33*$" OR REGEXP "^.*11&44*$" ... OR REGEXP "^.*22&11*$" OR REGEXP "^.*22&33*$" OR REGEXP "^.*22&44*$" ... OR REGEXP "^.*33&11*$" OR REGEXP "^.*33&22*$" OR REGEXP "^.*33&44*$" ... < 重覆 18*17 次> ) 效果是没错,但是一直觉得这样写很丑 而且之後可能会有 三组(11&22&33) 四组(11&22&33&44).. 的写法 可是这样就要用三个 loop 四个 loop 下去跑了 sql 丑就算了 php 也很没效率的感觉 不知道有哪位先进可以指导一二 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.125.155.100
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1468830790.A.C86.html
1F:→ MOONRAKER: 你写(11|22|34)&(11|22|34)不就结了 07/18 16:56
2F:→ MOONRAKER: 不然就通通取出来再explode()两次 07/18 16:57
3F:→ MOONRAKER: 除非你每秒要跑10次以上 太在意效率没什麽意思 07/18 16:58
4F:→ kiey: 有18组号码 11&22 or 22&34 or 11&34 .. 会有 18 * 17 次 07/18 17:36
5F:→ kiey: projects 一次会有几万笔资料 07/18 17:37
6F:→ kiey: projects.code 可能会有 12&23|23&34|34&45|45&56..不限几次 07/18 17:38
※ 编辑: kiey (59.125.155.100), 07/18/2016 17:40:42
7F:→ kiey: 补上 MYSQL 07/18 17:40
8F:推 shadowjohn: SQL的语法也有长度限制,这样作也不太行 07/18 18:02
9F:推 GALINE: 从你的内文我看不出一楼的解法为何不能用... 07/19 00:38
10F:→ GALINE: 然後一个栏位放了多组的二维资料,如果做得到的话还是 07/19 00:39
11F:→ GALINE: 另外开一个 table 存资料比较好.... 07/19 00:40
12F:→ GALINE: 如果真的有量且在意效能,别用regexp扫大table 07/19 00:44
13F:→ GALINE: 吃不到 index 的.. 07/19 00:46
14F:推 locklose: 同意楼上,没有index的explain会告诉你你正在遭报应 07/19 01:35
15F:→ kiey: 今天仔细看 一楼方法好像就可以了XD .. 谢谢 07/19 08:47
16F:→ MOONRAKER: 除非你还要考虑顺序 比如说11&22可以 22&11不行 07/19 10:08
17F:→ MOONRAKER: 不然(11|22|...)这样在regex没什麽问题 MySQL也支援 07/19 10:09
18F:→ MOONRAKER: (开console来跑过了 才会跟你讲可以) 07/19 10:10







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP