我试图使用改造和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时,数组的形式是什么?
答案 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);