gpt4 book ai didi

php - 从 MySQL 获取数组到 android

转载 作者:行者123 更新时间:2023-11-29 20:38:15 25 4
gpt4 key购买 nike

我已经编写了一个 php 代码来从 MYSQL 获取数据数组,但现在我正在努力将其返回到我的 android 中并只是为了庆祝它。

这是我的 php 代码:

if($_SERVER['REQUEST_METHOD']=='GET'){

$user_id = $_GET['user_id'];

require_once('dbConnect.php');

$user_tags = array();

foreach ($_REQUEST['user_id'] as $key => $val) {
$user_tags[$key] = filter_var($val, FILTER_SANITIZE_STRING);
}
$user_ids = "'" . implode("','", $user_tags) . "'";
$sql = "SELECT * FROM user_tags WHERE user_id IN ({$user_ids})";

$r = mysqli_query($con,$sql);

//creating a blank array
$result = array();

//looping through all the records fetched

while($row = mysqli_fetch_array($r)){

$result['tags'][] = $row['tags'];
}

//Displaying the array in json format
echo json_encode(array('result'=>$result));

mysqli_close($con);
}

这里是代码的 URL:“http://allwaysready.16mb.com/Cuboid/tagsTest.php?user_id[]=7

这是 php 代码的结果:{“结果”:{“标签”:[“Pascol”,“PHP”,“Python”]}}

我想在我的 Android 中得到这个“结果”。

这是我的 Android 代码:

 public class Jobs extends AppCompatActivity {

public static String tags;

private String JSON_STRING;
public static final String TAG_JSON_ARRAY="result";
public static final String KEY_USER_TAGS="tags";
public static final String URL_GET_TAG = "http://allwaysready.16mb.com/Cuboid/tagsTest.php?user_id[]=";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jobs);


getJSON();

Toast.makeText(getApplicationContext(),tags,Toast.LENGTH_LONG).show();


}

private void showEmployee() {
JSONObject jsonObject = null;
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONArray result = jsonObject.getJSONArray(TAG_JSON_ARRAY);

for (int i = 0; i < result.length(); i++) {
JSONObject jo = result.getJSONObject(i);
tags = jo.getString(KEY_USER_TAGS);

HashMap<String, String> employees = new HashMap<>();
employees.put(KEY_USER_TAGS, tags);

}

} catch (JSONException e) {
e.printStackTrace();
}
}

private void getJSON(){
class GetJSON extends AsyncTask<Void,Void,String>{

ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(Jobs.this,"Fetching Data","Wait...",false,false);
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
JSON_STRING = s;
showEmployee();
}

@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequest(URL_GET_TAG);
return s;
}
}
GetJSON gj = new GetJSON();
gj.execute();
}

但我只得到空白的 toast 。如果我犯了任何错误,请帮助我。

最佳答案

像这样修改你的 showEmployee:

private void showEmployee() {
JSONObject jsonObject = null;
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
try {
jsonObject = new JSONObject(JSON_STRING);
JSONObject result = jsonObject.getJSONObject(TAG_JSON_ARRAY);
JSONArray jsonTags = result.getJSONArray(KEY_USER_TAGS);

for (int i = 0; i < jsonTags.length(); i++) {
tags = tags + jsonTags.getString(i);

HashMap<String, String> employees = new HashMap<>();
employees.put(KEY_USER_TAGS, jsonTags.getString(i));

}

} catch (JSONException e) {
e.printStackTrace();
}
}

并将标签字符串设置为空字符串(否则第一个对象将为空)

   public static String tags = "";

代码仍然存在一些逻辑缺陷,您的员工 HashMap 将只包含最后一个条目,因为您总是在创建一个新的 HashMap。

关于php - 从 MySQL 获取数组到 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com