我有一个表:
CREATE TABLE IF NOT EXISTS `test` (
`firstname` varchar(100) NOT NULL,
`lastname` varchar(100) NOT NULL,
`nickname` varchar(100) NOT NULL
)
我有这个html代码:
<form action="" method="post">
<input name="firstname" type="text" />
<input name="lastname" type="text" />
<input name="nickname" type="text" />
<input type="submit" value="search" />
</form>
我需要当我填写firstname
文本框时,我的查询条件是:
firstname=$_REQUEST['firstname']
当此文本框未填写时,不应使用此条件。我希望当我填充两个文本框或三个文本框时,会选中相应的条件,但我需要一个查询来完成这一操作。
从安培开始。。。
$firstname=mysql_real_escape_string(trim($_POST['firstname']));
$lastname=mysql_real_escape_string(trim($_POST['lastname']));
$nickname=mysql_real_escape_string(trim($_POST['nickname']));
然后根据哪些输入字段不是空的来构建查询:
$query="SELECT * FROM `test` WHERE 1";
if ($firstname) $query .= " AND `firstname`='$firstname'";
if ($lastname) $query .= " AND `lastname`='$lastname'";
if ($nickname) $query .= " AND `nickname`='$nickname'";
如果将所有字段留空,则查询将选择所有行。如果输入一些信息,则每个给定的字段都必须与相应的列相匹配。
附言:当有人在名字字段中输入"Ed"时,也许你也想返回"Edward"。您可以在WHERE语句中使用LIKE '%Ed%'
而不是='Ed'
:firstname LIKE '%{$firstname}%'
$firstname=mysql_real_escape_string($_POST['firstname']);
$lastname=mysql_real_escape_string($_POST['lastname']);
$nickname=mysql_real_escape_string($_POST['nickname']);
if($firstname!="" && $lastname!="" && $nickname!="")
{
$query="SELECT * FROM `test` WHERE firstname='$firstname' and lastname='$lastname' and nickname='$nickname'";
}
试试这个。。。
if(!empty($_REQUEST['firstname'])
$firstName = ' AND firstName = "'. mysql_real_escape_string($_REQUEST['firstname']).'"';
else
$firstName = '';
if(!empty($_REQUEST['lastname'])
$lastName = ' AND lastName = "'. mysql_real_escape_string($_REQUEST['lastname']).'"';
else
$lastName = '';
if(!empty($_REQUEST['nickName'])
$nickname = ' AND nickName = "'. mysql_real_escape_string($_REQUEST['nickName']).'"';
else
$nickname = '';
$sql="SELECT * FROM `test` WHERE 1 $firstName $lastName $nickName";
echo $sql."<br />";
?>