0

我是 PHP 新手,我一直在研究如何使用 PHP Web 层从 Android 向 MySQL 发送和接收数据。我之前已经准备好我的代码来创建 Java 字符串数组emailAddresses[]phoneNumbers[]其中分别包含电话联系人的所有电子邮件地址和电话号码。

我想根据包含字段 DATA_TYPE 和 DATA_CONTENT 的 MySQL 表 DATA 检查这些值中的每一个,它们分别将数据标识为电话号码/电子邮件地址/其他项目,并包含数据。我认为最好将数组加载到 PHP 中,然后遍历它们的每个值以查看查询是否返回记录。如果是这样,那么我想将 DATA 中与具有该电话号码/电子邮件地址的用户关联的所有其他数据构建到 Android 的 JSON 响应中,稍后它将用于将数据复制到自己的 SQLite DB 中。

不过,我不确定如何最好地处理 PHP 的输入和输出。我看到的大多数示例都涉及使用 HTTPPOST 将 NameValuePairs 设置为实体,但这些示例似乎也仅将这些用作从单个记录中识别或复制数据的参数,例如用于登录,而我想传递大量相同的数据类型(电子邮件/电话)用于识别大量记录。我认为可能是将键指定为 "email[1]","someone@somewhere.com" "email[2]","another@s​​omewhere.com" 但由于我是 PHP 新手,所以我是不确定这会有多有效,尤其是在有 100 个左右的地址时。在我的新狂暴中,我会很感激一些指导,谢谢。

4

1 回答 1

1

首先,如果你需要传递大量数据,不管格式如何,都会很慢。“太慢”有多慢取决于您的特定应用程序及其要求。AsyncTask您应该在一个或另一个非 UI 线程中执行所有 HTTP 通信,以保持 UI 响应。显示进度对话框,即使是不确定的,也是向用户显示正在发生的事情的好方法。

现在,针对您的具体问题。我建议创建一个字符串的 JSON 数组来检查。这基本上会给你一个包含所有数据的字符串。将此字符串设置为NameValuePair具有您想要的任何名称的 a 的值,并将此 NameValuePair 作为 HTTP Post 实体传递给您的服务器。然后在您的 PHP 中,您可以简单地执行以下操作:$valuesToCheck = json_decode($_POST['name'])- 您的$valuesToCheck变量中有一个数组。

现在您可以在 PHP 中做任何您需要做的事情并在 PHP 中获取数据,例如,您可以得到一个数组数组,例如$dataToSend一个数组,其中每个元素都是调用的结果mysql_fetch_assoc- 或任何其他方式. 获得这些数据后,只需在 PHP 中执行此操作:

header("Content-type: text/json");
echo json_encode($dataToSend);

这会将您的所有数据发送回您的调用代码(在本例中为 Android)。最后,在 Android 中,获取响应并对其进行 JSON 解码。如果您返回一个空数组,则数据库中没有匹配项。如果数组不为空,那么您将获得数据并使用它做任何您需要的事情。

有很多博客/教程/等。在网上关于在 Android 中编码/解码 JSON。例如,你可以参考这个

于 2012-07-19T07:47:22.943 回答