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

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

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

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

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

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

呼叫

  1. if(isset($_POST['phone']) && isset($_POST['isServerToken'])){
  2. $userPhone = $_POST['phone'];
  3. $isServerToken = $_POST['isServerToken'];
  4. $token = $db->getToken(urlencode($userPhone),$isServerToken);
  5. echo json_encode($token);
  6. } else {
  7. $response = "Required parameter (phone , isServerToken) is missing!";
  8. echo json_encode($response);
  9. }
rdrgkggo

rdrgkggo1#

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

  1. $stmt->bind_result($a,$b,$c);
  2. $token = array(); // Initialise
  3. while ($stmt->fetch())
  4. {
  5. $token[] = ['phone' => $a, 'token' => $b, 'isServerToken' => $c];
  6. }
  7. $stmt->close();
  8. return $token;

相关问题