在PHP函数中使用循环并返回每行的数组

时间:2014-12-13 00:12:12

标签: php sql mysqli

我目前正在创建一个接受用户ID的函数,并且根据该id,它应该返回包含用户ID的posts数据库中的所有值。我有一个单独的php文件,我保存了该函数,因为我想在很多页面上使用它。在functions.php文件中,我有:

class getposts
{
    public function getpostcontent($userid){
    include('db-conx.php');//Connects to Db
    $getval = "SELECT `content`,`date` FROM posts WHERE userid = ?";
    $stmt = $conn->stmt_init();
    if ($stmt->prepare($getval))
    {
        $userid = $_SESSION['userid'];
        $stmt->bind_param("s", $userid);
        $stmt->execute();
        $stmt->bind_result($content, $date);
        while ($stmt->fetch()) {
            $displayname = "Tom";
            $array = [
            "content" => "$content",
            "date" => "$date",
            "displayname" => "$displayname",
            ];
            return $array;
        }
    }
}

并在Posts.php中使用它来调用它:

$posts = new getposts();
echo $posts ->getpostcontent($userid);

问题是用户在posts数据库中有多行,代码只运行一次。我如何循环它以在调用它时显示每行的值?我可能会过度思考并四处寻找,但似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

每次迭代都可以在数组中插入一条新记录 - 然后返回整个数组:

    while ($stmt->fetch()) {
        $displayname = "Tom";
        $array[] = array(
        "content" => "$content",
        "date" => "$date",
        "displayname" => "$displayname"
        );

    }
    return $array;

在您的代码中,每次都会重写数组,只返回数据库的最后一行。现在它将简单地添加到while循环内的数组中,然后在完成后将其全部返回。

编辑:我通常使用$result从数据库中取回数据 - 不确定您的方法是否有效 - 但是如果它没有考虑到:)

编辑2:

在代码中,您现在拥有一个数组数组。您可以像这样调出每个元素:

echo $array[0]['content'];

这将从第一条记录中回显content的内容,$array[1]['content']包含数据库的第二行,依此类推。

编辑3:

你正在返回一个数组 - 而不是一个对象,所以你可以这样做:

$posts = new getposts();
// You make an object of the class.

$returned=$posts->getpostcontent($userid);
// Now you run the query against the userID and return the array into $returned

foeach($returned as $val)
{
    print_r($val);
    // This is showing you the structure of each array inside the main array.

    // Or you can access each bit as needed:

    echo 'The date is '.$val['date'].'<br>';
    echo 'The content is is '.$val['content'].'<br>';
}