返回MYSQLi准备语句查询并将结果绑定为数组

时间:2016-01-10 17:57:37

标签: php mysql arrays mysqli

我想将mysqli预处理语句的结果放入数组中并返回该数组以便在另一个页面中使用。

代码如下所示。

function getPermission($mysqli , $email) {
    if ($stmt = $mysqli->prepare("SELECT m.email , g.permission 
                                  FROM members m  
                                  INNER JOIN members_groups q ON m.member_id = q.member_id  
                                  INNER JOIN groups g on q.group_id = g.group_id                                                    
                                  WHERE email = ?")) 
    {
        $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
        $stmt->execute();    // Execute the prepared query.
        $stmt->store_result();
        // get variables from result.
        $stmt->bind_result($user_email, $user_perms);

        while ($stmt->fetch()) {
            echo '  ID: '.$user_email; //prints the results.
        }

    }

}

我想将查询结果放入数组并返回数组。

注意:在Windows 7中使用带有php和mysql的wamp服务器。我尝试使用$stmt->getresults方法,但它什么都不返回。

1 个答案:

答案 0 :(得分:1)

您可以尝试将它一个接一个地存储在循环中:

    $results = array();
    while ($stmt->fetch()) {
        $results[] = array(
            "email" => $user_email,
            "perms" => $user_perms
        );
    }
    return $results;

如果你需要在另一个包含此函数的文件中使用此数组,这将有效,但如果你需要在另一个请求中,PHP必须再次运行此代码以填充数组。

如果在会话期间需要此数组,请考虑将结果放在会话变量中:

 $_SESSION['myarray'] = $results;

然后在函数中,首先检查是否设置了上述会话变量,如果是,则立即返回该值。只有在尚未设置时,才能执行其余功能。