MYSQL-PHP:以数组形式获取MySQLi结果
这是更新代码 但我得到了错误:致命错误(调用未定义的方法User::fetch_assoc()) 这是我的方法代码MYSQL-PHP:以数组形式获取MySQLi结果,php,mysql,sql,arrays,mysqli,Php,Mysql,Sql,Arrays,Mysqli,这是更新代码 但我得到了错误:致命错误(调用未定义的方法User::fetch_assoc()) 这是我的方法代码 public function getAllUsers(User $user) { $stmt = $this->conn->prepare("SELECT u.user_id, u.email, u.name, u.phone, u.picture, s.status
public function getAllUsers(User $user)
{
$stmt = $this->conn->prepare("SELECT u.user_id, u.email, u.name, u.phone, u.picture, s.status
FROM ".$this->table_name." as u, status as s
WHERE u.status_id = s.status_id");
if($stmt == FALSE)
{
die($this->conn->error);
}
else
{
$stmt->execute();
$stmt->bind_result($user_id, $email, $name, $phone, $picture, $status);
while($stmt->fetch())
{
$user->setUserId($user_id);
$user->setEmail($email);
$user->setName($name);
$user->setPhone($phone);
$user->setPicture($picture);
$user->setStatus($status);
}
$stmt->close();
return $user;
}
}
这是我在index.php中调用对象方法的代码
$app->get('/users', 'authenticate', function()
{
global $user_id;
$response = array();
$user = new User();
// fetching all users
$userDB = new UserDb(MySqlDb::getInstance()->connect());
$result = $userDB->getAllUsers($user);
$response["error"] = false;
$response["users"] = array();
// looping through result and preparing users array
while ($user = $result->fetch_assoc())
{
$tmp = array();
$tmp["user_id"] = $user->getUserId();
$tmp["email"] = $user->getEmail();
$tmp["name"] = $user->getName();
$tmp["phone"] = $user->getPhone();
$tmp["picture"] = $user->getPicture();
$tmp["status"] = $user->getStatus();
array_push($response["users"], $tmp);
}
echoRespnse(200, $response);
});
请检查我的传真,是不是错了?
谢谢:)getAllUsers返回一个用户数组 所以$result是一个用户数组,而不是您可能期望的数据库查询结果
然后在$result上调用fetch_assoc(),这是一个用户数组,由于它没有此方法,因此可以调用未定义的方法User::fetch_assoc()尝试执行$u['User_id']=$User->setUserId();在
getAllUsers
-我认为您从未执行过查询;迭代一个空数组,然后返回该数组。然后在返回的空数组上运行fetch_array()
(这就是您看到的错误)。您应该看看使用mysqli的例子。我已经用while更改了foreach循环。但是我又犯了那个错误。你为什么不发布你现在的代码,而不是不同的版本呢?这个错误是不言自明的。在某个地方你混合了变量。您正在返回一个用户数组,但尝试对其调用方法fetch\u assoc。