我有一个将2值传递给mySQL的android程序,即Time in和Time out。我不知道会发生什么,但是我有一种情况,即所传递的数据不完整。例如,我将创建一条记录,唯一需要输入的时间是在键入时间后单击“保存”,因此记录是有数据的时间,超时为空。保存后,我的自动传递器会将数据发送到mySQL。我要做的下一件事是编辑该记录以添加“超时”,以便它们两个都有数据。在检查我的数据库我的两列都有数据后,自动传递器将运行。现在这是错误开始的地方,我有一个按钮调用刷新,它将从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中将其解码以用于循环将其保存在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名称以及我的刷新按钮中的名称相同?
我的问题是怎么了?看起来它仍然传递旧数据。 TYSM提供任何帮助