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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:54:29