为什么用bind\u结果重写代码后phpapi返回null?

xkftehaa  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(331)

我正在使用这个用于android应用程序的php api来获取令牌,以便根据服务器和用户[电话]发送通知。问题是我在应用程序中出错,只有我的api的这部分出错。哪个错误是

<br />
<b>Notice</b>:  Undefined variable: token in <b>/home/meskand1/public_html/pasargad-drinkshop/db_functions.php</b> on line <b>390</b><br />
null

我已经在下面注解了第390行和函数代码。
代码在get\u result&fetch\u assoc中运行得很好,但是由于online host不支持mysqlnd,所以我不得不更改它。有人能解释一下错误发生的地方和原因吗?在教程中,讲师返回了$token,现在我的代码中出现了错误。
下面是函数中的代码:

public function getToken($phone,$isServerToken){
   $stmt = $this->conn->prepare("SELECT phone, token, isServerToken FROM `token` WHERE phone=? AND isServerToken=?") or die ($this->conn->error);
   $stmt->bind_param("ss",$phone,$isServerToken);
   $result = $stmt->execute();
   $stmt->bind_result($a,$b,$c);
   while ($stmt->fetch()){
       $token[] = ['phone' => $a, 'token' => $b, 'isServerToken' => $c];
   }
   $stmt->close();
   return $token; // => This is line 390
}

呼叫

if(isset($_POST['phone']) && isset($_POST['isServerToken'])){
   $userPhone = $_POST['phone'];
   $isServerToken = $_POST['isServerToken'];

   $token = $db->getToken(urlencode($userPhone),$isServerToken);

   echo json_encode($token);

} else {
   $response = "Required parameter (phone , isServerToken) is missing!";
   echo json_encode($response);
}
rdrgkggo

rdrgkggo1#

如果sql与任何数据都不匹配, $token 未定义,因为它仅在循环中设置。你至少应该在循环之前初始化它以防万一。。。

$stmt->bind_result($a,$b,$c);
$token = array();    // Initialise
while ($stmt->fetch())
{
    $token[] = ['phone' => $a, 'token' => $b, 'isServerToken' => $c];
}
$stmt->close();
return $token;

相关问题