难以根据表单中的用户输入更改PHP文档中的SQL查询

时间:2012-04-26 21:48:24

标签: php mysql sql pear


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

我的数据库中的表格基本上是存储各种社交俱乐部的信息。它有关于他们的位置,名称,booking_price,alcohol_permitted的数据。我需要帮助的一点与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。 我可以对我的查询做些什么,以便如果用户选择了“两者”选项,它会检索提供酒精和俱乐部的社交俱乐部,而不是?我弄清楚了!我的查询中是否需要if语句?

感谢您查看此内容,对不起,如果我没有解释清楚这一点。

2 个答案:

答案 0 :(得分: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,就像他的答案中建议的那样。

然后,您可以将条件语句减少到:

$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";
}

请注意!

答案 1 :(得分:0)

好的,首先,请将alchohol_permitted列的数据类型更改为bool(MySQL中的位(1))。只是阅读,让我发冷......

现在,问你的问题。试试这句话:

WHERE $user_alcohol_permitted_selection IS NULL 
OR alcohol_permitted = $user_alcohol_permitted_selection