Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPBB SQL查询几乎正确_Php_Sql_Phpbb - Fatal编程技术网

PHPBB SQL查询几乎正确

PHPBB SQL查询几乎正确,php,sql,phpbb,Php,Sql,Phpbb,在PHPBB中,我试图编辑一个SQL来获取更多的数据,我可以在文章中使用这些数据。标准查询从3个表(user_表、post_表和zebra_表)中获取数据。对于每一行(post),它将数据分配给可通过PHPBB html文件使用的变量,例如: 'username' => $row['username'], 因此,在HTML文件中,可以使用{postrow.USERNAME},它将显示当前循环/post的用户名 标准查询如下所示: $sql = $db->sql_b

在PHPBB中,我试图编辑一个SQL来获取更多的数据,我可以在文章中使用这些数据。标准查询从3个表(user_表、post_表和zebra_表)中获取数据。对于每一行(post),它将数据分配给可通过PHPBB html文件使用的变量,例如:

'username'          => $row['username'],
因此,在HTML文件中,可以使用{postrow.USERNAME},它将显示当前循环/post的用户名

标准查询如下所示:

$sql = $db->sql_build_query('SELECT', array(
'SELECT'    => 'u.*, z.friend, z.foe, p.*',

'FROM'      => array(
    USERS_TABLE     => 'u',
    POSTS_TABLE     => 'p',
),

'LEFT_JOIN' => array(
    array(
        'FROM'  => array(ZEBRA_TABLE => 'z'),
        'ON'    => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
    )
),

'WHERE'     => $db->sql_in_set('p.post_id', $post_list) . '
    AND u.user_id = p.poster_id'
)))

我正试图从“phpbb_profile_fields_data”表中提取“pf_lol_caller”值,具体取决于它当前所在的“user_id”:

$sql = $db->sql_build_query('SELECT', array(
    'SELECT'        => 'u.*, pf.pf_lol_summoner, z.friend, z.foe, p.*',

    'FROM'          => array(
            USERS_TABLE             => 'u',
            POSTS_TABLE             => 'p',
    ),
    'LEFT_JOIN'     => array(
            array(
                    'FROM'  => array(ZEBRA_TABLE => 'z'),
                    'ON'    => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
            ),
            array(
                    'FROM'  => array('phpbb_profile_fields_data' => 'pf'),
                    'ON'    => 'pf.user_id = ' . $user->data['user_id']
            )
    ),
    'WHERE'         => $db->sql_in_set('p.post_id', $post_list) . '
            AND u.user_id = p.poster_id'
)))

现在,当while循环开始在行中循环时,如果我回显:

echo $row['pf_lol_summoner'];
它显示每个帖子的“pf_lol_召唤者”值,而不是每个人的值。我认为这是使用我的用户id(设置在cookie中)。有人注意到什么吗


编辑:echo$row['username'];与所有其他值一起工作正常。

您将
phpbb\u profile\u fields\u data
表限制为仅记录用户
$user->data['user\u id']
-这就是您想要做的吗?“phpbb\u profile\u fields\u data”有两列:user\u id和pf\u lol\u caller。所以我想说,无论这篇文章的“用户id”是什么,在phpbb_profile_fields_数据表中查找它,并给出pf_lol_caller的任何值。希望这是有意义的。是的,这就是它正在做的,所以你应该得到正确的结果。您是否对照数据库中的内容检查了结果?你为什么认为有问题?问题是什么?啊,我知道发生了什么,只是我无法解决。因此$user->data['user\u id']获取加载页面的人的id。因此,我的用户_id=1。我是说,在用户id是我的地方获取pf.pf_lol_召唤器,而不是当前的海报id。如果页面上有3篇帖子,它每次都显示我的pf.pf_lol_召唤器。在哪里定义了“你的”用户id?只需替换“pf.user_id=”$用户->数据['user\u id']带有
'pf.user\u id='$拥有我的用户id的变量