所以,我有以下功能:
private function getUserData($user_nickname)
{
if ($this->databaseConnection()) {
$stmt1=$this->dbh->prepare('SELECT * FROM users WHERE nickname = ?');
$stmt1->bind_param('s', $user_nickname);
$stmt1->execute();
return $stmt1->fetch_object();
}
else {
return false;
}
}
我收到以下错误:致命错误:未捕获错误:调用未定义方法mysqli_stmt :: fetch_object()
我做了一些研究,但在mysqli_stmt中没有找到任何提取对象 http://php.net/manual/en/class.mysqli-stmt.php
这是否意味着如果我使用预准备语句,我不能将结果用作对象?我真的希望它能成为一个对象。
P.S。我使用mysqli。
答案 0 :(得分:2)
Mysqli不是一个非常实用的API。
您可以尝试使用get_result()但它可能在您的系统上无法使用。
我建议你使用PDO而不是mysqli:
private function getUserData($user_nickname)
{
$stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?');
$stmt->execute([$user_nickname]);
return $stmt->fetch(PDO::FETCH_OBJ);
}
除了mysqli的其他好处之外,PDO不仅可以返回匿名stdObject
,还可以返回can create an instance of an existing class,将参数传递给构造函数。比如说,如果你有User
课程,你可以写
private function getUserData($user_nickname)
{
$stmt = $this->dbh->prepare('SELECT * FROM users WHERE nickname = ?');
$stmt->execute([$user_nickname]);
return $stmt->fetchObject('User');
}