Android里怎么用PHP连数据库,代码示例和步骤分享,学习笔记记录一下
- 问答
- 2026-01-19 14:55:10
- 2
整理自CSDN博客《Android项目中如何连接PHP接口与MySQL数据库》、博客园文章《Android+PHP+MySQL开发入门实战》以及开发者个人技术笔记《移动端与服务器通信基础》)
为什么要在Android里用PHP连数据库 直接让Android应用连接数据库不安全(来源:CSDN博客),因为数据库地址、用户名密码会暴露在APP代码中,容易被反编译获取,通常做法是让Android端通过HTTP请求与PHP脚本交互,由PHP在服务器端操作数据库(来源:博客园文章),PHP充当中间层,负责验证请求和执行安全的数据库查询。
具体步骤与代码示例
-
准备服务器环境 需要在支持PHP和MySQL的服务器(如Apache+PHP+MySQL环境)部署PHP文件,本地测试可用XAMPP或宝塔面板搭建环境(来源:开发者笔记)。
-
创建数据库表 示例MySQL表结构(来源:CSDN博客):
CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(50) );
-
编写PHP接口脚本 PHP文件(如api.php)负责接收Android请求、连数据库、返回JSON数据(来源:博客园文章):
<?php $host = "localhost"; $user = "root"; $password = ""; $database = "testdb"; // 连接数据库 $conn = mysqli_connect($host, $user, $password, $database); if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 获取Android传来的参数(示例为查询用户) $user_id = $_POST['user_id']; // 从POST请求获取参数 // 查询数据库(重要!必须防SQL注入) $stmt = $conn->prepare("SELECT name, email FROM users WHERE id = ?"); $stmt->bind_param("i", $user_id); // "i"表示整数类型 $stmt->execute(); $result = $stmt->get_result(); $response = array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $response[] = $row; } } echo json_encode($response); // 返回JSON格式数据 $stmt->close(); $conn->close(); ?>注意:实际使用需添加错误处理和安全验证(如Token验证),示例仅保留核心逻辑(来源:CSDN博客)。
-
Android端代码(Java/Kotlin) Android中使用HttpURLConnection或OkHttp发送POST请求(来源:开发者笔记):
// 在子线程中执行网络请求(Android禁止主线程网络操作) new Thread(() -> { try { URL url = new URL("http://你的服务器地址/api.php"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 发送请求参数 String postData = "user_id=123"; OutputStream os = conn.getOutputStream(); os.write(postData.getBytes()); os.flush(); // 读取PHP返回的JSON数据 BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream())); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } // 解析JSON(需处理异常) JSONArray jsonArray = new JSONArray(response.toString()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String name = obj.getString("name"); String email = obj.getString("email"); // 更新UI需回到主线程:runOnUiThread或Handler } conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } }).start();注意:AndroidManifest.xml需添加网络权限
<uses-permission android:name="android.permission.INTERNET" />(来源:博客园文章)。
常见问题记录
- 乱码问题:PHP和Android端需统一编码(如UTF-8),PHP可添加
header("Content-type: application/json; charset=utf-8");(来源:CSDN博客)。 - 网络权限失效:Android 9以上默认禁止HTTP请求,需在res/xml/network_security_config.xml配置允许明文传输(来源:开发者笔记)。
- 连接超时:Android端需设置连接超时时间
conn.setConnectTimeout(5000)。 - 安全性:实际项目应对通信数据加密(如HTTPS),并对PHP接口做身份验证(来源:博客园文章)。
补充说明
- 现代开发推荐使用Retrofit等库简化网络请求(来源:开发者笔记),但基础原理仍需掌握。
- 示例仅演示查询操作,插入/更新数据只需修改PHP中的SQL语句和Android请求参数。
- 调试时可先用Postman测试PHP接口正常后再对接Android端。
(完)

本文由度秀梅于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/83728.html
