我的数据库是:
CREATE TABLE `user` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(77) NOT NULL,
`pass` varchar(77) NOT NULL,
`datetime` varchar(22) NOT NULL,
`level` varchar(33) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
INSERT INTO `user` VALUES (1, 'majid', '123', '2012-04-16', 'admin');
INSERT INTO `user` VALUES (2, 'feras', '123', '2012-04-15', 'gs');
INSERT INTO `user` VALUES (3, 'sami', '123', '2012-04-12', 'gs');
INSERT INTO `user` VALUES (4, 'rashed', '123', '2012-04-09', 'gs');
INSERT INTO `user` VALUES (5, 'saad', 'dfd', '2012-04-13', 'bb');
我的搜索页面是一个包含三个下拉列表的表单...第一个用于名称,第二个用于传递,第三个用于级别。
现在,如果我选择一个下拉列表,它会给我一个很好的结果,但如果我选择两个或更多列表,它就不会给我任何东西。
如何让所有下拉列表充当特定结果的过滤器? 像“全通(123)和等级(gs)”
我的查询是:
$name= $_GET['name'];
$pass= $_GET['pass'];
$level= $_GET['level'];
mysql_select_db($database_sqltest, $sqltest);
$query_Recordset1 = "SELECT * FROM user WHERE '$name' OR pass LIKE '$pass' OR level LIKE '$level'";
$Recordset1 = mysql_query($query_Recordset1, $sqltest) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
答案 0 :(得分:0)
您需要使用AND
运算符而不是OR
来提高特异性并限制查询。我添加了%
个符号(通配符),以便搜索“12”匹配传递“123”。如果您不想要该功能,可以删除它们。
$query_Recordset1 = "SELECT * FROM user WHERE `pass` LIKE '%$pass%' AND `level` LIKE '%$level%' AND `name` LIKE '%$name%'";