Expo React Native开发iOS应用如何连接phpMyAdmin数据库
先讲最核心的认知
首先掰正新手最容易搞混的点:phpMyAdmin本身不是数据库,它只是个网页版的MySQL/MariaDB可视化管理工具——你平时开浏览器登进去建表、改数据、导数据用的是它,你实际要对接的是它背后运行的MySQL数据库。
绝对不要在React Native客户端里直接直连MySQL,没任何商量的余地:
- 你把数据库账号、密码、地址硬写在App安装包里,别人反编译一下就能拿到,直接拖库删库你拦都拦不住
- MySQL默认用的3306端口,不管是云服务商还是本地运维,基本都不会对公网开放,就算你硬开了端口,每天被扫描器爆破是常态
- 直连没有任何权限管控逻辑,任何拿到连接信息的人都能操作全库数据,完全没有安全边界
正确的实现路径
整体就是三层结构,别搞花里胡哨的:React Native iOS端 → 后端API接口层 → MySQL数据库(phpMyAdmin只用来管库,完全不参与业务请求流程)
第一步:先确认基础环境
- 先记好你登phpMyAdmin时用的数据库地址、库名、账号密码,别用root账号,单独建个业务专用账号,只给你业务需要的那个库的增删改查权限,别给删表、改结构的高风险权限
- 你现在部署phpMyAdmin的那台服务器,本身就带PHP+MySQL运行环境,直接用来部署后端接口就行,不用额外买新服务器
第二步:写后端接口(新手直接用PHP写最快,不用额外搭环境)
不用上来就搞什么复杂框架,先写个最简单的接口跑通逻辑,比如你要查用户信息,就在服务器的网站根目录建个api/getUser.php的文件,写下面的代码:
<?php // 本地调试阶段可以开跨域允许,上线记得把*换成你自己的域名,限制请求来源 header("Access-Control-Allow-Origin: *"); header("Content-Type: application/json; charset=utf-8"); // 下面填你自己的数据库信息,因为接口和数据库在同个服务器,host直接填localhost就行 $dbHost = 'localhost'; $dbName = '你自己的数据库名'; $dbUser = '你刚建的业务账号用户名'; $dbPwd = '对应账号的密码'; try { $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4", $dbUser, $dbPwd); // 拿前端传的参数,必须用预处理,别直接拼SQL,防注入 $userId = $_GET['user_id'] ?? 0; $stmt = $pdo->prepare("SELECT id,username,avatar FROM users WHERE id = ?"); $stmt->execute([$userId]); $userInfo = $stmt->fetch(PDO::FETCH_ASSOC); // 统一返回JSON格式给前端 echo json_encode([ 'code' => 0, 'msg' => '请求成功', 'data' => $userInfo ]); } catch(PDOException $e) { echo json_encode([ 'code' => -1, 'msg' => '数据库请求失败' ]); } ?>
写完传去服务器之后,你自己先在浏览器里访问你的域名/api/getUser.php?user_id=1,能正常返回JSON数据,就说明接口没问题。
第三步:RN端对接接口
直接用原生自带的fetch或者你习惯用的axios之类的请求库调接口就行,举个最基础的请求例子:
const fetchUserInfo = async (userId) => { try { const response = await fetch(`https://你的域名/api/getUser.php?user_id=${userId}`); const result = await response.json(); if (result.code === 0) { console.log('拿到的用户数据:', result.data); // 在这里写你自己的页面渲染、状态更新逻辑就行 } } catch (error) { console.log('请求异常:', error); } }
注意iOS端的网络权限问题:如果你接口还没配HTTPS证书,要在项目的Info.plist里临时加ATS配置允许HTTP请求,上线前一定要给接口配好HTTPS,把这个权限配置删掉,不然App Store审核可能卡。
新手最容易踩的坑
- 别信网上搜出来的什么RN直连MySQL的第三方库,大多是停更好几年的老项目,安全隐患极大,真上线了被拖库哭都来不及
- 所有前端传过来的参数,都要用PDO预处理的方式拼SQL,别直接把参数拼到SQL语句里,分分钟被SQL注入
- phpMyAdmin不要直接裸奔在公网,加个访问验证或者限制IP访问,密码别设太简单,不然容易被黑客扫到拖库
- 真机调试的时候别填
localhost当接口地址,这个地址指向的是你手机本地,不是你的电脑或者服务器,要填服务器的公网域名/IP - 接口记得加基本的参数校验、权限校验,别什么请求都直接往数据库发
内容的提问来源于stack exchange,提问作者d.chan
相关产品推荐
相关产品推荐

