0


我有一个 PHP 文档,该文档根据搜索表单中的输入值查询 MYSQL 数据库。一切都运行良好,除了我正在努力添加一个我相信会使整个应用程序更加用户友好的功能。

我数据库中的表基本上是存储各种社交俱乐部的信息。它有关于他们的位置、姓名、booking_price、alcohol_permitted 的数据。我需要帮助的一点与酒精许可有关。在数据库中存储 1 或 2,2 表示允许饮酒,1 表示不允许。

目前我的表格如下所示:

<form>
    <label for="alcohol_check">Search clubs where alcohol permitted?</label>
       <input type="radio" id="alcohol_check1" value="1" /><label for="radio1">No</label>
       <input type="radio" id="alcohol_check2" value="2" /><label for="radio2">Yes</label>
       <input type="radio" id="alcohol_check3" value="???" /><label for="radio3">Show both</label>

    <label for="club_name">Enter social club name:</label>
       <input type="text" id="club_name" name="club_name"/>
</form>



我的 PHP 看起来像这样:

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input
        AND
        WHERE alcohol_permitted = $user_alcohol_permitted_selection";

目前的问题是,我的查询只会检索提供或不提供酒精的社交俱乐部。因为此时从alcohol_permitted 表单传递的值是1 或2。我可以对我的查询做些什么,以便如果用户选择“both”选项,它会检索提供酒类的社交俱乐部和不提供酒类的俱乐部?我想不通!我的查询中是否需要 if 语句?

感谢您检查这一点,抱歉,如果我没有很好地解释这一点。

4

2 回答 2

1

这应该有效。

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";

if ($user_alcohol_permitted_selection == "???")
{
     $query.= "AND WHERE alcohol_permitted = 1 OR alcohol_permitted = 2";
} else {
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

此外,如果列alcohol_permitted仅包含值 1 或 2。我建议您将列类型更改为 bool,就像他的回答中建议的 realmitchconnors 一样。

然后,您可以将条件语句缩减为:

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";    

if ($user_alcohol_permitted_selection != "???")
{
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

请注意!.

于 2012-04-26T21:57:10.237 回答
0

好的,首先,请将您的 alchohol_permitted 列的数据类型更改为 bool(MySQL 中的位(1))。光是读就让人不寒而栗……

现在,关于你的问题。试试这个 where 语句:

WHERE $user_alcohol_permitted_selection IS NULL 
OR alcohol_permitted = $user_alcohol_permitted_selection
于 2012-04-26T21:54:16.580 回答