作者shadowjohn (台湾独立公投入联)
看板PHP
标题Re: [请益] 多条件查询
时间Fri Jan 25 12:33:44 2008
※ 引述《camille168 (凯凯)》之铭言:
: : if (isset($_GET['$field'])) {
: : $colname_RecID = (get_magic_quotes_gpc()) ? $_GET['$field'] : addslashes($_GET['$field']);
: : }
: : 打开档案一看就看到你的错误了...
: : $_GET['field'] ○
: : $_GET['$field'] ╳
: : $query_RecID = sprintf
: : ("SELECT * FROM `01_id`
: : WHERE '%s' like '%s' ORDER BY i_date DESC", $field,$colname_RecID);
: : 另外....
: : 一般用SQL用 like指令
: : 我习惯是 tablefield放前,查的字放後
: : 比如
: : $name='羽山';
: : $sql="select id from data where name like '%".$name."%' ";
: : 也就是说.. name like '%羽山%'
: : 即可以查 名字中 有 羽山 二字的所有人名
: : 比如 肥羽山秋人 或 胖羽山
: : 当然你用sprintf也不是不行,只是你的%s会被你键入的field取代
: : 变成应有的%就消失了
: : 所以你应该要...
: : $query_RecID = sprintf
: : ("SELECT * FROM `01_id`
: : WHERE '%s' like '%%s%' ORDER BY i_date DESC", $field,$colname_RecID);
: : ^ ^
: : 大概就是如此...
: 我改了
: $query_RecID = sprintf
: ("SELECT * FROM `01_id`
: WHERE '%s' like '%s' ORDER BY i_date DESC", $field,$colname_RecID);
: 这样
: 然後打了
: 你说的印出query_recid
: 查询工号(id)
: 他印出select * from '01_id' where 'id' like 'id' order by i_date DESC
: 查型号(model)的话
: 他会印出select * from '01_id' where 'model' like 'model' order by i_date DESC
所以我才说你文章根本没念清楚
你即然要作 like 的查询比对
你根本没下模糊区域当然找不到东西啊~"~
select * from '01_id' where 'model' like 'model' order by i_date DESC (╳)
select * from '01_id' where 'model' like '%model%' order by i_date DESC (○)
只是你查东西的构想还真怪...
通常会用like,我以为只有查文章某一段内容才会用的到呢..
在下习惯like的用法如下
$sql="select id,title,date,time from library where
concat(title,content) like '%".$keywords."%' order by id desc";
用concat组合某些栏段拿来作 like 满实用的, 可作简单的全文查询机
你把field用id来代替,又没下模糊区(%,?)不如用 = 就好了,速度还比较快些..
like 可以在你关键字前後 加上 % 或 ? , 就看你需求怎定了
--
3WA训练家的工作室
宗旨:人生就是要爽
个人布弱格 网址:
http://3wa.myvnc.com
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.240.117.82
※ 编辑: shadowjohn 来自: 123.240.117.82 (01/25 12:35)
1F:推 camille168:谢谢S大的指导,我总算用出来了 01/25 13:41
2F:→ camille168:不好意思,刚学PHP,不是很懂,请多见谅 01/25 13:42