0

値が返されている行を選択したいと思います。Male選択ボックスでまたはを選択Femaleした場合は、それを検索してもらいたいと思います。その部分はうまく機能しています。しかし、彼らが を選択しEitherた場合、MySQL は列にMaleorが含まれているかどうかを確認し、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");
4

4 に答える 4

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");
于 2012-08-18T08:00:30.947 に答える
1

性別を 2 つのオプション (男性、女性) のみで構成されていると仮定すると、次のようになります。

$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);
于 2012-08-18T08:02:33.830 に答える
0

フィールドに String の代わりに Bitwise を使用している場合、試した解決策は機能しますgender

私が提案するのは、SQL IN 関数を使用することです。何かのようなもの:

$query = "SELECT * FROM tennis WHERE gender IN ('" + implode("', '", $postGenderArray) + "')";
于 2012-08-18T08:48:18.927 に答える
0

いずれかの場合は、クエリを変更してワイルド カード検索を実行します。

SELECT * FROM テニス WHERE 性別 LIKE '$postgenderuse'

そうすれば、どちらかを選択したときに、postgenderuse を % 記号に設定できます。

ただし、クエリで 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 の機能の一部です。

〜ダン

于 2012-08-18T08:04:27.380 に答える