苦苦挣扎将SQL查询放在一起

时间:2015-04-20 16:44:20

标签: php mysql sql smf

我正在尝试进一步自定义我的网站/论坛的现有修改,但不幸的是,我要求支持的作者目前几乎没有空余时间。

有人可以告知我这个查询可能出错吗?

            SELECT date FROM {db_prefix}log_activity
            WHERE date = 2015-12-25
            ( SELECT COUNT(*) AS total FROM {db_prefix}log_online 
            WHERE ID_MEMBER = $memberID );

我基本上是要查看我的指定日期是否出现在{db_prefix} log_activity中,如果是,请触发{db_prefix} log_online

中找到的所有成员的操作

(更多的是代码,但我认为上面的部分是造成我问题的原因..)

我的尝试的完整代码:

            if (!in_array('test',$currentBadges))
            {

            $resultgroup = $smcFunc['db_query']('', "
            SELECT date FROM {db_prefix}log_activity
            WHERE date = 2015-04-20
            ( SELECT COUNT(*) AS total FROM {db_prefix}log_online 
            WHERE ID_MEMBER = $memberID );
            ");
            $totalRow = $smcFunc['db_fetch_assoc']($resultgroup);

            {
            $badgeAction = 'test';
            if (!in_array($badgeAction,$currentBadges) && $totalRow['total'] >= 1)
            {
            $badgeID = GetBadgeIDByAction($badgeAction);
            $ret = AddBadgeToMember($memberID,$badgeID,false);
            if ($ret == true)
            {
            $currentBadges[] = $badgeAction;
            $newBadges[]  = $badgeAction;
            }

            }


            }
            //end badge code
            }

我之前从未使用过此网站,希望这种格式有点可读......:P

基本上我试图做的是: IF(日期)=今天 AND(member)已登录 那么奖徽章......

更改尝试的记录:

            "WHERE date = 2015-04-20"
            WHERE date = "2015-04-20"

1 个答案:

答案 0 :(得分:1)

根据您使用"WHERE date = 2015-04-20"

的编辑

您在双引号查询中使用双引号。

使用这样的单引号和您最初发布的代码中的内容:

$resultgroup = $smcFunc['db_query']('', "
            SELECT date FROM {db_prefix}log_activity
            WHERE date = '2015-04-20'
            ( SELECT COUNT(*) AS total FROM {db_prefix}log_online 
            WHERE ID_MEMBER = $memberID );
            ");

另外,如果$memberID不是整数,则还需要引用它。

即:

$resultgroup = $smcFunc['db_query']('', "
            SELECT date FROM {db_prefix}log_activity
            WHERE date = '2015-04-20'
            ( SELECT COUNT(*) AS total FROM {db_prefix}log_online 
            WHERE ID_MEMBER = '$memberID' );
            ");
  • 但我有点怀疑。但是,为了以防万一,我需要指出这一点。

有关此内容的更多信息,请阅读Stack

上的以下内容 MySQL.com网站上的

和字符串函数: