Класс все еще передает старый массив в PHP

#java #php #android

#java #php #Android

Вопрос:

У меня есть программа для Android, которая передает MySQL 2 значения, то есть время входа и время истечения. Я не знаю, что происходит, но у меня есть сценарий, согласно которому переданные данные являются неполными. Например, я создам запись, и единственное, что нужно указать, это время ввода, после того, как я введу время, я нажму сохранить, чтобы запись time in содержала данные, а время ожидания равно нулю. После сохранения мой автоматический пропуск отправляет эти данные в MySQL. Следующее, что я сделаю, это отредактирую эту запись, чтобы добавить время ожидания, чтобы у них обоих были данные. автоматический пропуск запустится после проверки моей базы данных, в которой в обоих столбцах есть данные. Теперь вот где начинается ошибка, у меня есть кнопка вызова refresh, которая извлекает мои данные из MySQL, создает из них JSON, а затем отправляет его в мой Android после обработки, у возвращенных данных нет тайм-аута, и когда я проверяю это, у данных в MySQL нет тайм-аута, и даже я добавляю его. Я не знаю, что произошло

Что я сделал в своей Java, так это создал JSONArray, преобразовал его в строку, передал в мой php-файл, затем мой php-файл декодирует его, а затем зацикливает при сохранении в базе данных.

Вот как я создаю json

 JSONArray vis_array = new JSONArray();

Cursor unsync_vis = Sync.Unsync_Visit_All();
while (unsync_vis.moveToNext()) {
    JSONObject vis_data = new JSONObject();
    try {
        vis_data.put("t1", formatInsert_n(unsync_vis.getString(unsync_vis.getColumnIndex("t1"))));
        vis_data.put("t2", formatInsert_n(unsync_vis.getString(unsync_vis.getColumnIndex("t2"))));
        vis_array.put(vis_data);
    } catch (JSONException e) {
        e.printStackTrace();
        Log.e("Auto Sync Error", e.getMessage());
    }                   
}



public String formatInsert_n(String data) {
    if (TextUtils.isEmpty(data) || data.length() == 0) {
        data = "null";
    } else {
        data = data.replace("'", "''");
        data = data.replace("null", "");
        if (data.toString().matches("")) {
            data = "null";
        } else {
            data = "'"   data   "'";
        }
    }
    return data;
}
  

после создания этого json я преобразую его в строку, передаю его с помощью stringRequest затем в моем php я буду декодировать его, используя цикл for, чтобы сохранить его в MySQL

Вот php-код

 <?php
    header('Content-Type: application/json');
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);


    $insert_visit_new      = isset($_POST['insert_visit_new']) ? $_POST['insert_visit_new'] : "";


    if ($insert_visit_new != "") {
        $vis_array = json_decode($insert_visit_new, true);
        $vis_count = count($vis_array);

        for ($i = 0; $i < $vis_count; $i  ) {
            $vis = $vis_array[$i];

            $t1            = $vis['t1'];
            $t2            = $vis['t2'];

            $ins_sql = "INSERT INTO table t1,t2 VALUES ('$t1','$t2') ON DUPLICATE KEY UPDATE t1 = $t1,t2 = $t2"
            $stmt = $DB->prepare($ins_sql);
            $stmt->execute();
        }
    }

    echo "done";
?>
  

кстати, приведенный выше код находится внутри AsyncTask , а класс является BroadcastReceiver

причина в том, что я не отменяю регистрацию своего BroadcastReceiver ?

или мое имя JSONArray из этого класса и внутри моей кнопки обновления одинаковы?

мой вопрос в том, что не так? похоже, что он все еще передает старые данные. любая помощь приветствуется, ТИСМ

Комментарии:

1. Где ваш php-код?

2. @Странно, на минутку, сэр, я добавлю это

3. @Strange закончил добавлять php-код

4. @Strange пожалуйста, скажите мне, хотите ли вы увидеть select или создание json в php, и я добавлю это