开发者社区 问答 正文

我正在使用httpurlconnection将帖子发送到我的php代码,然后使用它来获取值给我的回收

-2

prepare("SELECT delivery_id,delivery_number,confirm_rider,confirm_payment,delivery_status,item_pic FROM user_delivery WHERE phone=$email"); //executing the query $stmt->execute(); //binding results to the query $stmt->bind_result($id, $deliveryno, $confirmrider,$confirmpayment,$deliverystatus,$itempic); $product = array(); //traversing through all the result while($stmt->fetch()){ $temp = array(); $temp['delivery_id'] = $id; $temp['delivery_number'] = $deliveryno; $temp['confirm_rider'] = $confirmrider; $temp['confirm_payment'] = $confirmpayment; $temp['delivery_status'] = $deliverystatus; $temp['item_pic'] = $itempic; array_push($product, $temp); } //displaying the result in json format echo json_encode($product); ?> 但它告诉我未定义电子邮件,同时它会将值返回给我的吐司,而不是我的回收者视图

展开
收起
保持可爱mmm 2019-11-15 17:24:24 413 分享 版权
阿里云 AI 助理回答

从您提供的代码片段来看,这似乎是一个使用PHP和MySQL的后端脚本,用于查询与特定电话号码(在这里用$email表示)相关的配送信息,并将结果以JSON格式返回给前端。您遇到的问题是“未定义电子邮件”以及数据被显示在错误的地方(吐司而不是回收者视图)。这两个问题分别属于后端逻辑处理和前端展示的问题。

解决“未定义电子邮件”问题

  1. 确保传递参数:首先确认前端在请求这个API时是否正确地传递了email参数。如果前端是通过GET或POST方法发送请求,请确保对应的键名是email,并且值是有效的。

  2. 检查变量赋值:在PHP中,直接使用$email之前,需要确保它已经被正确赋值。您可以添加一个简单的检查来确认这一点,例如:

    if (!isset($_GET['email']) && !isset($_POST['email'])) {
       die('Email parameter is missing.');
    }
    $email = isset($_GET['email']) ? $_GET['email'] : $_POST['email']; // 根据实际情况选择GET或POST
    
  3. 防止SQL注入:此外,直接将用户输入(如$email)拼接到SQL语句中可能会导致SQL注入攻击。建议使用预处理语句(您已经在做),但要确保绑定变量正确执行:

    $stmt = $conn->prepare("SELECT delivery_id,delivery_number,confirm_rider,confirm_payment,delivery_status,item_pic FROM user_delivery WHERE phone=?");
    $stmt->bind_param("s", $email); // "s" 表示字符串类型
    

解决数据展示问题(吐司而非回收器视图)

这个问题实际上属于前端应用的范畴,通常发生在Android开发中:

  1. 检查网络请求处理:确保您的前端应用(可能是Android应用中的Activity或Fragment)正确处理了从服务器返回的数据。您应该在成功接收到JSON响应后,解析这些数据并将其传递给RecyclerView的Adapter,而不是简单地显示在一个Toast消息中。

  2. 更新RecyclerView

    • 确保您的RecyclerView已经正确定义,并且有对应的Adapter。
    • 在处理网络回调的地方,解析JSON数据到一个列表(比如ArrayList),然后调用Adapter的notifyDataSetChanged()或者更具体的通知方法(如notifyItemInserted(position))来更新UI。

简而言之,对于后端,确保参数传递正确并安全处理;对于前端,确保数据接收后正确地更新RecyclerView。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: