我想选择返回值的行。如果他们在选择框中选择了Male
或Female
,我希望它能够搜索到它。那部分工作正常。但是,如果他们选择Either
,我希望它说MySQL应该查看该列是否包含Male
或Female
并返回任何结果。
请注意,如果可能,我不希望在查询中使用OR语句,具体取决于代码的写出方式。
我尝试了下面的内容,但它似乎没有用。这些值来自包含Either
,Male
或Female
的表单中的选择框。
if ($postgender == "either")
{
$male = "Male";
$female = "Female";
$postgenderuse = ($male || $female);
}
else {
$postgenderuse = $postgender;
}
$query4 = mysql_query("SELECT * FROM tennis WHERE gender='$postgenderuse' ORDER BY playerid DESC LIMIT 0,20");
答案 0 :(得分:1)
从语句开始创建查询,同时检查表单是否正在发送3个值中的一个(只是为了确保)
if ($postgender == "Either")
{
$postgenderuse = " ( `gender`='Male' OR `gender`='Female' ) ";
}
elseif ($postgender == "Male" || $postgender == "Female") {
$postgenderuse = " `gender`='".$postgender."' ";
}
else {
die('Error, no gender selected');
}
$query4 = mysql_query("SELECT * FROM `tennis` WHERE ".$postgenderuse." ORDER BY `playerid` DESC LIMIT 0,20");
答案 1 :(得分:1)
假设您以二元方式处理性别,仅包含两个选项(男性,女性):
$sql = "SELECT * FROM tennis";
if(in_array($postgender, array("Male", "Female"))
{
$sql .= " WHERE gender=".$postgender;
}
$sql .= " ORDER BY playerid DESC LIMIT 0,20)";
$query4 = mysql_query($sql);
答案 2 :(得分:0)
如果是,则更改您的查询以进行外卡搜索。
SELECT * FROM tennis WHERE gender LIKE'$ postgenderuse'
这样,当他们选择其中之一时,您可以将postgenderuse设置为%Sign。
尽管如此,最好在查询中使用OR,并根据条件构建查询,例如:
if($postgender == "Male") {
$condition = "WHERE gender='Male'";
} else if($postgender == "Female") {
$condition = "WHERE gender='Female'";
} else {
$condition = "";
}
$query = "SELECT * FROM tennis " . $condition . " ORDER BY BLAH";
无论如何,任何一种方式都应该有效。能够从条件构造查询是php的强大功能的一部分。
〜丹
答案 3 :(得分:0)
如果您对字段gender
使用Bitwise而不是字符串,那么您尝试过的解决方案就可以使用。
我的建议是使用SQL IN function。 类似的东西:
$query = "SELECT * FROM tennis WHERE gender IN ('" + implode("', '", $postGenderArray) + "')";