Mybb Update Query无效

时间:2017-02-26 02:43:08

标签: php mysql mybb

我的mybb-forum中有一个功能。它是一个插件的一部分,跟踪依赖于某些论坛并在成员页面上显示日期(以及其他内容)。

此部分适用于用户删除帖子的时间。然后应该在设置论坛中找到已删除的帖子之前的最后一个帖子,并在该用户的成员页面上显示该(较旧的)日期。

但是更新查询不起作用,我不知道问题是什么。

这是我的代码。没有错误但它也没有写入数据库。

function lastippost_update($pid)
{ 
    global $db, $mybb;
    $query = $db->simple_select("posts","fid,uid,dateline","pid='{$pid}'");
    $post = $db->fetch_array($query);
    if ($mybb->settings['lastippost'] != '')
    {
            $ipids = $mybb->settings['lastippost'];
            if (in_array($post['fid'], $ipids))
            {
                    $ipquery = $db->write_query("SELECT uid,dateline FROM ".TABLE_PREFIX."posts WHERE fid IN ($ipids) AND uid='".$post['uid']."' ORDER BY dateline DESC LIMIT 1 OFFSET 1");
                    $ippost = $db->fetch_array($ipquery);
                    $db->update_query("users", array('lastippost' => $ippost['dateline']), "uid='".$ippost['uid']."'");
            }
    }

}

$ ipids是以逗号分隔的论坛ID列表。

我不知道如果这有帮助,但我还有一些相似的代码可行

             $ipids = $mybb->settings['lastippost'];
             $ipquery = $db->write_query("SELECT uid, dateline FROM ".TABLE_PREFIX."posts WHERE fid IN ($ipids) ORDER BY uid,dateline DESC");
             while ($ippost = mysql_fetch_assoc($ipquery))
             {
                     if($ippost['uid'] != $lastuid)
                     {
                             $db->update_query("users", array('lastippost' => $ippost['dateline']), "uid='".$ippost['uid']."'");
                     }
                     $lastuid = $ippost['uid'];
             }

1 个答案:

答案 0 :(得分:0)

好的,我发现了我的问题:

$ipids = $mybb->settings['lastippost'];

以上是一个字符串。我需要它用于选择查询。但是这部分显然是指一个数组:

if (in_array($post['fid'], $ipids))

这可能不是最好的解决方案,但现在我做了类似的事情并且有效:

$ipids = $mybb->settings['lastippost'];
$ipids2 = explode(",", trim($ipids));

第一个用于选择查询,第二个用于in_array

感谢您的帮助! (我仍然愿意接受更优雅的解决方案:))