在XAMPP数据库中按邮箱更新数据遇Android Networking服务器超时问题求助
解决Android Networking更新XAMPP数据库超时问题
先从你给出的信息来看,首先能发现的就是PHP代码不完整,这大概率是导致请求超时的原因之一,咱们一步步来排查和修复:
1. 修复PHP代码的核心问题
你的$query只写了一半,而且缺少错误处理逻辑,这会让数据库请求卡住或者报错,进而导致Android端超时。给你补全并优化代码:
<?php if(isset($_POST['update'])) { $hostname = "localhost"; $username = "root"; $password = ""; $databaseName = "truck_loader"; // 建立连接并检查错误 $connect = mysqli_connect($hostname, $username, $password, $databaseName); if (!$connect) { // 输出连接错误,方便调试 die("连接失败: " . mysqli_connect_error()); } $name = $_POST['name']; $email = $_POST['email']; $mobile = $_POST['mobile']; $address = $_POST['address']; // 补全UPDATE语句,注意这里要根据你的表名和主键调整,假设主键是email(因为你是按邮箱更新) $query = "UPDATE your_table_name SET name = ?, mobile = ?, address = ? WHERE email = ?"; // 使用预处理语句,防止SQL注入同时更安全 $stmt = mysqli_prepare($connect, $query); mysqli_stmt_bind_param($stmt, "ssss", $name, $mobile, $address, $email); if(mysqli_stmt_execute($stmt)){ echo "更新成功"; } else { echo "更新失败: " . mysqli_error($connect); } mysqli_stmt_close($stmt); mysqli_close($connect); } ?>
注意:把your_table_name换成你实际的表名,WHERE条件要对应你用来匹配更新记录的字段(比如如果主键是id,就改成WHERE id = ?并绑定对应的参数)
2. Android端的关键配置检查
(1)请求URL不要用localhost
如果你是用Android模拟器或者真机测试,localhost指向的是设备本身,不是运行XAMPP的电脑。要换成电脑的内网IP地址,比如http://192.168.1.100/update.php(可以在电脑的网络设置里查到内网IP)。
(2)设置合理的超时时间
在Android Networking的请求里显式设置超时,避免默认超时过短:
AndroidNetworking.post("你的请求URL") .addBodyParameter("update", "1") .addBodyParameter("name", "xxx") .addBodyParameter("email", "xxx") // 其他参数... .setTimeout(30000) // 设置30秒超时,根据需求调整 .build() .getAsJSONObject(...);
(3)处理明文HTTP权限(Android 9+)
XAMPP默认用HTTP协议,Android 9及以上默认禁止明文HTTP请求,需要在AndroidManifest.xml的<application>标签里添加:
android:usesCleartextTraffic="true"
(4)确保添加INTERNET权限
在AndroidManifest.xml里确认有这个权限:
<uses-permission android:name="android.permission.INTERNET" />
3. XAMPP服务器端的排查
- 确认Apache和MySQL服务都已经在XAMPP控制面板中启动。
- 检查电脑的防火墙是否允许80端口(XAMPP默认Apache端口)的入站请求,暂时关闭防火墙测试是否能解决问题。
- 可以直接在浏览器里访问你的PHP文件,传入参数测试是否能正常执行(比如
http://192.168.1.100/update.php?update=1&name=test&email=test@xx.com&mobile=123&address=xxx),看是否能返回正确的结果,排除PHP本身的问题。
先按这些步骤排查,应该能解决超时的问题,如果还有问题可以补充更多Android端的代码细节~
内容的提问来源于stack exchange,提问作者Prajakta Thorat
相关产品推荐
相关产品推荐

