如何获取和return查询结果?

How to fetch and return query results?

我正在创建一个函数,该函数应该从数据库中获取名字和姓氏以及 return 查询。不过有些地方不对。

名字和姓氏不显示。我没有收到任何错误或警告,我已经尝试了本网站和其他网站提供的所有答案(虽然不多)。

有人能告诉我它有什么问题吗?

public function getFirstAndLastName() {

    $username = $this->user['username'];

    $query = $this->con->prepare("SELECT first_name, last_name FROM users WHERE username = ? ");
    $query->bind_param("s", $username);
    $query->execute();
    $query_result = $query->get_result();
    $query_result->fetch_array();
    while ($row = $query_result->fetch_assoc()) {

        $row['first_name'];
    }

    return $row;
}

尝试使用 $query->bind_param(":username", $username)

并在查询中更改 ?通过 :respuesta

"SELECT first_name, last_name FROM users WHERE username = :username

查看文档并为我糟糕的英语道歉 https://www.php.net/manual/es/pdostatement.bindparam.php

首先,如果你想找到一个更好的方法,你可以使用这个

public function getFirstAndLastName() {

    $username = $this->user['username'];

    $query = $this->con->prepare("SELECT first_name, last_name FROM users WHERE username = ? ");
    $query->bind_param("s", $username);
    $query->execute();
    $query_result = $query->get_result();
    $result = $query_result->fetch_all(MYSQLI_ASSOC);
    Return $result;
}

mysqli 有一个方便的函数,可以立即从查询结果中 returns 一个数组:mysqli_fetch_all()。所以而不是这条线

while ($row = $query_result->fetch_assoc()) {

        $row['first_name'];
    }

它可能只是一行:

$result = $query_result->fetch_all(MYSQLI_ASSOC);

如果您想找到函数为什么会 return 无效的答案,我会为您解释:

你的代码有一些错误

首先当你执行这一行时$query_result->fetch_array();

实际上你只是清空了 mysqli 缓冲区!所以你在缓冲区中没有任何东西可以在这一行中捕获它 - > while ($row = $query_result->fetch_assoc()) {

另一方面,即使缓冲区中有内容,您也不会在这一行中执行任何操作 -> $row['first_name'];

如果您想更正您的代码,您应该像这样编写代码 -> 首先对这一行进行评论 -> $query_result->fetch_array();

public function getFirstAndLastName() {

    $username = $this->user['username'];

    $query = $this->con->prepare("SELECT first_name, last_name FROM users WHERE username = ? ");
    $query->bind_param("s", $username);
    $query->execute();
    $query_result = $query->get_result();
    //$query_result->fetch_array();
    while ($row = $query_result->fetch_assoc()) {

       $result[] =  $row['first_name'];
    }

    return $result;
}

编辑:

如果你想同时获得名字和姓氏,你必须这样做 ->

public function getFirstAndLastName() {

    $username = $this->user['username'];

    $query = $this->con->prepare("SELECT first_name, last_name FROM users WHERE username = ? ");
    $query->bind_param("s", $username);
    $query->execute();
    $query_result = $query->get_result();
    //$query_result->fetch_array();
    while ($row = $query_result->fetch_assoc()) {

       $result[] =  $row;
    }

    return $result;
}