使用Android将String Arrays传递到PHP文件中

时间:2016-10-21 02:54:30

标签: php android mysql database retrofit

我试图使用改造和PHP在MySQL中存储值。我将传递给PHP一个postid字符串(postid)和一个字符串数组。对于字符串数组中的每个索引(称为标记),我将在数据库中创建一个唯一的行。它将具有以下形式:

--------------------
|postid    |  tags  |
--------------------
| postid   | tags[0]|
| postid   | tags[1]|
| postid   | tags[2]|
....................
--------------------

我遇到的问题是,对于字符串数组,只存储数组中的最后一个值。

这是改装界面

@FormUrlEncoded
@POST("create_recipe.php")
Call<Void> createRecipe(
        @Field("postid") String postid,
        @Field("tags") String[] tags
);

和改装客户电话

Retrofit retrofit = ApiClient.getClient();
                                ApiInterface apiService = retrofit.create(ApiInterface.class);

                                Call<Void> call = apiService.createRecipe(postid, tags);
                                call.enqueue(new Callback<Void>() {
                                    @Override
                                    public void onResponse(Call<Void> call, Response<Void> response) {

                                    }

                                    @Override
                                    public void onFailure(Call<Void> call, Throwable t) {

                                    }
                                });

以下是处理此问题的PHP(不包括某些初始化代码)

if (isset($_POST['postid']) && isset($_POST['tags']){
$uid = $_POST['postid'];
$tags = array($_POST['tags']);  
$tags_new = str_replace(array('[', ',', ']'), '' , $tags);

foreach ($tags_new as $value){
          mysql_query("INSERT INTO Tags(postid, tag) VALUES('$postid', '$value')");
}

}

如果我传入postid = 30和tags = {&#34; milk&#34;,&#34; cheese&#34;,&#34; bread&#34;}我希望它看起来像

--------------------
|postid    |  tags  |
--------------------
| 30   | milk      |
| 30   | cheese    |
| 30   | bread     |
....................
--------------------

但只会存储面包。

如何处理在PHP中作为参数传入的字符串数组?

当我将数组传递给$ tags时,数组的形式是什么?

3 个答案:

答案 0 :(得分:0)

我在一段时间后遇到了同样的问题,并没有找到明确的解决方案。但是我为类似的东西建立了一个简单的解决方我希望this solution有所帮助。

答案 1 :(得分:0)

实际上,你可以在PHP工作表中打印出来,你可以添加以下内容来记录输入。

file_put_contents("test.log",json_encode($_POST)."--".json_encode($_GET));

只有这样,您才能确定数组是否正确传递到php脚本。

答案 2 :(得分:0)

您可能想重新考虑这一点,因为以下行基本上只是删除字符串中的所有障碍($ tags,现在解释为String而不是数组):

$tags_new = str_replace(array('[', ',', ']'), '' , $tags);

并将其更改为

$ tags_new =拆分(&#39;,&#39;,$ tags);