首先,如果你想找到一种更好的方法,你可以使用这个
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 有一个方便的函数,可以立即从查询结果中返回一个数组:mysqli_fetch_all()。所以代替这条线
while ($row = $query_result->fetch_assoc()) {
$row['first_name'];
}
它可能只是一行:
$result = $query_result->fetch_all(MYSQLI_ASSOC);
如果您正在寻找答案,为什么您的函数将返回 null,我将为您解释:
您的代码中有一些错误
首先,当您执行此行时$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;
}