如何将ArrayList数据存入MySQL表列?Android+PHP新手求助
解决方案:Android日期列表通过PHP存入MySQL
一、Android端:处理日期数据并发送到PHP接口
添加网络请求依赖
在app/build.gradle的dependencies中加入OkHttp(新手友好的网络库):implementation 'com.squareup.okhttp3:okhttp:4.10.0'同时添加Gson依赖用于JSON转换:
implementation 'com.google.code.gson:gson:2.10.1'处理日期列表并发送请求
把选中的Date列表转换成统一格式的字符串列表,再转成JSON字符串发送到PHP接口:public void onClick(View v) { ArrayList<Date> selectedDates = (ArrayList<Date>) calendarPickerView.getSelectedDates(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); // 将Date对象转为格式化后的字符串列表 List<String> dateStrings = new ArrayList<>(); for (Date date : selectedDates) { dateStrings.add(sdf.format(date)); } // 转成JSON字符串 String jsonDates = new Gson().toJson(dateStrings); // 发送POST请求 OkHttpClient client = new OkHttpClient(); RequestBody body = new FormBody.Builder() .add("dates", jsonDates) .build(); Request request = new Request.Builder() .url("http://你的服务器IP/save_dates.php") .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(@NonNull Call call, @NonNull IOException e) { runOnUiThread(() -> Toast.makeText(Selectdate.this, "请求失败", Toast.LENGTH_SHORT).show()); } @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { if (response.isSuccessful()) { String result = response.body().string(); runOnUiThread(() -> Toast.makeText(Selectdate.this, result, Toast.LENGTH_SHORT).show()); } } }); }别忘了在
AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" />
二、PHP后端:接收数据并存入MySQL
创建save_dates.php文件,处理请求并插入数据:
<?php // 数据库连接信息 $servername = "localhost"; $username = "你的数据库用户名"; $password = "你的数据库密码"; $dbname = "你的数据库名"; // 建立连接 $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 接收并解析JSON数据 $jsonDates = $_POST['dates']; $dateList = json_decode($jsonDates, true); // 预处理SQL语句,避免SQL注入 $stmt = $conn->prepare("INSERT INTO selected_dates (date_value) VALUES (?)"); $stmt->bind_param("s", $date); // 循环插入每个日期 foreach ($dateList as $date) { $stmt->execute(); } $stmt->close(); $conn->close(); echo "日期保存成功,共保存" . count($dateList) . "条数据"; ?>
三、MySQL表结构示例
先创建存储日期的表:
CREATE TABLE selected_dates ( id INT AUTO_INCREMENT PRIMARY KEY, date_value DATE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
注意事项
- 测试时确保Android设备和服务器在同一局域网,PHP地址用服务器的局域网IP;
- 线上环境不要用root账号连接数据库,分配最小权限的专用账号;
- 保持Android端和PHP端的日期格式统一(这里用
yyyy-MM-dd)。
内容的提问来源于stack exchange,提问作者Gokul Suresh
相关产品推荐
相关产品推荐

