我正在使用此PHP API(用于Android应用)获取令牌,以基于服务器和用户[电话]发送通知。问题是我在应用程序中出现错误,并且我的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_Result和fetch_assoc一起正常工作,但是由于在线主机不支持mysqlnd,所以我不得不更改它。谁能解释错误发生在哪里以及为什么发生?在具有get_Result讲师的教程中返回了$ 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);
}
答案 0 :(得分:1)
如果您的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;