如何检查一个查询是否存在多个值

时间:2011-11-03 07:31:15

标签: php mysql

基本上我正在为我论坛的用户建立一个汽车奖励系统。 它将做的是检查它们是否符合IE Posts,Karma等奖项的标准.... 如果成员符合此条件,则允许其自行发布..

我面临的一个问题是我想查询一次MySQL数据库并对每个奖项进行多次检查,看看他们是否已经拥有它。 如果不允许他们通过点击按钮自行发放奖励。

这是我到目前为止所拥有的

//Query Member Awards DB to check if we already have this Award
    $query2 = $smcFunc['db_query']('', '
        SELECT id_award, id_member
        FROM {db_prefix}awards_members
        WHERE id_member = {int:id_prof}',
            array(
                'id_prof' => $user_info['id'],
            )
    );
    $info2 = $smcFunc['db_fetch_assoc']($query2);

    echo $info2['id_award'];

    if ($info2['id_award'] == '27')
        echo 'exists';

我的表格看起来像这样

uniq_id  id_award id_member date_received favorite
    44      29        1       2011-11-02    1
    31      21        1       2011-11-02    0
    41      32        1       2011-11-02    0
    43      27        1       2011-11-02    0
    34      18        1       2011-11-02    0
    35      38        1       2011-11-02    1
    39      31        1       2011-11-02    0
    40      30        1       2011-11-02    1

现在基本上我会有一堆奖项都有不同的ID 我想能够说是否存在不显示按钮.. 如果只有一个奖项需要检查,但我需要检查几个奖项,那就没关系了。

我不想使用where子句进行多次查询,以查看该成员是否已获此奖励。

有没有更简单的方法这样做,所以我只需要一个查询,并可以检查多个奖项..

if ($info2['id_award'] == '1')
            echo 'exists';

if ($info2['id_award'] == '2')
            echo 'exists';

等等

我对这个最好的方式感到很困惑。 任何帮助都会很棒。

编辑:

是的,基本上它看起来像这样..我将使用ajax提交数据..

if ($info2['id_award'] != '27') && ($info['karma_good'] >= '100') {
        echo '
        <form id="karma_god" method="post">
            <input type="hidden" id="recipient_to" name="recipient_to" value="' . $info['id_member'] . '" size="32" />
            <input type="hidden" id="award" name="award" value="28" size="32" />
            <input type="hidden" id="year" name="year" value="' . date('Y') . '" size="32" />
            <input type="hidden" id="month" name="month" value="' . date('n') . '" size="32" />
            <input type="hidden" id="day" name="day" value="' . date('d') . '" size="32" />
            <span>You have above 100 Karma! A New Award Awaits. </span><button class="button"> <img src="http://www.uniquez-home.com/awards/28.gif" alt="" style="vertical-align:bottom;"> Karma God </button>
        </form>';

显然,在这个奖项下还有一些奖项......

3 个答案:

答案 0 :(得分:5)

你可以这样做:

Select * FROM awards_member WHERE id_award in (1,2,3,4,5) AND id_member = 5

只需添加您需要检查的其他奖励ID

根据查询结果,您可以遍历每个结果并检查尚未给出的奖励ID,并在需要时显示该按钮。

答案 1 :(得分:2)

获取授予该用户的所有奖项,并将其添加到阵列中。

// generate the array
// obviously you can use your function here to fetch results and iterate over it
// it just matters that you generate an array of awarded awards
$awarded = array();
while($row = mysql_fetch_assoc($result)){
    $awarded[] = $row['id_award'];
}

然后,很容易检查您的应用程序逻辑:

// check for award id 2
if(in_array(2, $awarded)){
    // echo award 2 is received
}

// check for award id 3
if(in_array(3, $awarded)){
    // echo award 3 is received
}

答案 2 :(得分:1)

你可以尝试

SELECT aw.id, COALESCE(am.id_member, 0)
FROM awards aw LEFT JOIN award_members am
ON aw.id = am.id_award
WHERE am.id_member = your_member

通过此查询,您拥有所有奖励ID,如果已向会员提供单一奖励,则您获得会员ID,否则您将获得零。