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

私の検索ページは、3つのドロップダウンリストを含むフォームです。1つ目は名前、2つ目はパス、3つ目はレベルです。

ここで、ドロップリストを1つ選択すると良い結果が得られますが、2つ以上のリストを選択しても何も得られません。

すべてのドロップダウンリストを特定の結果のフィルターのように機能させるにはどうすればよいですか?「オールパス(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代わりに、演算子を使用する必要があります。「12」の検索がパス「123」と一致するように、記号(ワイルドカード)ORを追加しました。%その機能が必要ない場合は、それらを削除できます。

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