Mybb 更新查询不起作用
Mybb Update Query is not working
我的 mybb-forum 有一个功能。它是跟踪依赖某些论坛并在会员页面上显示日期(以及其他内容)的插件的一部分。
这部分是针对用户删除他的post。然后它应该在已删除的论坛中找到最后一个 post 并在该用户的会员页面上显示该(较旧的)日期。
但是更新查询不起作用,我不知道是什么问题。
这是我的代码。没有错误,但也没有写入数据库。
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'];
}
好的,我发现了我的问题:
$ipids = $mybb->settings['lastippost'];
以上是字符串。我需要它用于 select 查询。但是hier这部分明显是指一个数组:
if (in_array($post['fid'], $ipids))
它可能不是最好的解决方案,但现在我做了类似的事情并且它有效:
$ipids = $mybb->settings['lastippost'];
$ipids2 = explode(",", trim($ipids));
第一个用于 select 查询,第二个用于 in_array
感谢您的帮助! (我仍然愿意接受更优雅的解决方案的建议:))
我的 mybb-forum 有一个功能。它是跟踪依赖某些论坛并在会员页面上显示日期(以及其他内容)的插件的一部分。
这部分是针对用户删除他的post。然后它应该在已删除的论坛中找到最后一个 post 并在该用户的会员页面上显示该(较旧的)日期。
但是更新查询不起作用,我不知道是什么问题。
这是我的代码。没有错误,但也没有写入数据库。
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'];
}
好的,我发现了我的问题:
$ipids = $mybb->settings['lastippost'];
以上是字符串。我需要它用于 select 查询。但是hier这部分明显是指一个数组:
if (in_array($post['fid'], $ipids))
它可能不是最好的解决方案,但现在我做了类似的事情并且它有效:
$ipids = $mybb->settings['lastippost'];
$ipids2 = explode(",", trim($ipids));
第一个用于 select 查询,第二个用于 in_array
感谢您的帮助! (我仍然愿意接受更优雅的解决方案的建议:))