作者shadowjohn (台湾独立公投入联)
看板PHP
标题Re: [请益] 多条件查询
时间Wed Jan 23 17:26:29 2008
※ 引述《camille168 (凯凯)》之铭言:
: 我想要做一个查询是选择栏位然後输入查询值来查询
: 也就是说,我在网页上做了一个下拉式选单来选栏位
: (标签=中文栏位名,值=mysql栏位名称)
: 後面再做一个text来输入值
: 选到那个栏位时输入值就可以依那栏位来查我所输入的值
: 我想要做的就是这种
: 现在有个问题就是
: 我在写sql时where那里应该怎麽写会比较好?
: 我现在是把栏位名称用变数来替代
: where '$field' like 'colname'
: 变数~colname 预设值:% 执行值:$_GET['field']
: 不过这样没办法查询说
: 按查询的话就查不到任何资料
: 请问有那位大大可以替我解惑呢?
: 谢谢m大和s大的解说
: 我改了
: http://moon.nfu.edu.tw/~g241126/1.phps
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);
^ ^
大概就是如此...
--
3WA训练家的工作室
宗旨:人生就是要爽
个人布弱格 网址:
http://3wa.myvnc.com
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.56.213.47
※ 编辑: shadowjohn 来自: 61.56.213.47 (01/23 17:32)
1F:推 mudgame:记得羽山秋人好像是玩偶游戏的主角吧? 01/24 02:21
2F:推 camille168:我试了,还是不行耶!查询时,资料还是不会动~ 01/25 08:59
3F:→ shadowjohn:echo $sql; 01/25 11:10
4F:→ shadowjohn:把你的 $query_RecID 执行结果印出来看看吧 01/25 11:11