0

我的数据库是:

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);
4

1 回答 1

0

您需要使用AND运算符而不是OR来增加特异性并限制查询。我添加了%符号(通配符),以便搜索“12”将匹配通行证“123”。如果您不想要该功能,可以删除它们。

$query_Recordset1 = "SELECT * FROM user WHERE `pass` LIKE '%$pass%' AND `level` LIKE '%$level%' AND `name` LIKE '%$name%'";
于 2012-04-27T16:34:55.987 回答