You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ArrayList数据存入MySQL表列?Android+PHP新手求助

解决方案:Android日期列表通过PHP存入MySQL

一、Android端:处理日期数据并发送到PHP接口

  1. 添加网络请求依赖
    在app/build.gradle的dependencies中加入OkHttp(新手友好的网络库):

    implementation 'com.squareup.okhttp3:okhttp:4.10.0'
    

    同时添加Gson依赖用于JSON转换:

    implementation 'com.google.code.gson:gson:2.10.1'
    
  2. 处理日期列表并发送请求
    把选中的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:55:19