#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, и я добавлю это