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

如何在React JS项目中连接SQL Server数据库并对接PHP配置文件

整体实现逻辑

React作为前端框架运行在用户浏览器端,无法直接调用PHP文件或访问SQL Server数据库。你需要将PHP侧封装为HTTP API接口,React通过HTTP请求工具调用接口完成数据交互即可。

第一步:完善PHP侧接口逻辑

你已有的dbConfig.php只需保证已经正确配置SQL Server连接参数(主机地址、端口、库名、账号、密码)、可正常建立数据库连接即可,示例内容参考:

// dbConfig.php 参考实现
<?php
$serverName = "SQL Server地址,端口";
$connectionOptions = array(
    "Database" => "数据库名",
    "Uid" => "登录账号",
    "PWD" => "登录密码"
);
$conn = sqlsrv_connect($serverName, $connectionOptions);
if(!$conn) {
    die(print_r(sqlsrv_errors(), true));
}
?>

接下来新建独立的PHP接口文件,比如api/getData.php,引入dbConfig.php后处理请求、返回JSON格式数据:

// api/getData.php 接口示例
<?php
// 本地开发阶段配置跨域头,生产环境请替换*为你的前端正式域名
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// 引入数据库配置
require_once '../dbConfig.php';

// 示例:查询目标表数据
$sql = "SELECT * FROM 你的业务表名";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false) {
    die(json_encode(array("status" => "error", "msg" => sqlsrv_errors())));
}

$data = array();
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    $data[] = $row;
}

// 返回JSON结果
echo json_encode(array("status" => "success", "data" => $data));

// 释放连接
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

写完后将PHP项目部署到本地服务环境(如XAMPP、WAMP),假设本地PHP服务运行在http://localhost:8000,则上述接口的访问地址为http://localhost:8000/api/getData.php,可直接在浏览器访问该地址,确认能正常返回JSON数据后再进行React侧开发。

第二步:React侧调用接口

React侧不需要配置任何数据库、PHP相关参数,直接调用上述PHP接口即可,两种常用实现方式:

原生fetch实现(无需额外依赖)

import { useEffect, useState } from 'react';

function App() {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetch('http://localhost:8000/api/getData.php')
      .then(res => res.json())
      .then(res => {
        if (res.status === 'success') {
          setData(res.data);
        } else {
          console.error('请求失败', res.msg);
        }
        setLoading(false);
      })
      .catch(err => {
        console.error('接口请求错误', err);
        setLoading(false);
      })
  }, []);

  if (loading) return <div>加载中...</div>;

  return (
    <div>
      <h1>从SQL Server获取的数据</h1>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.你要展示的字段名}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

axios实现(需先安装依赖)

先执行安装命令:npm install axios
组件调用逻辑:

import { useEffect, useState } from 'react';
import axios from 'axios';

function App() {
  const [data, setData] = useState([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    axios.get('http://localhost:8000/api/getData.php')
      .then(res => {
        if (res.data.status === 'success') {
          setData(res.data.data);
        }
      })
      .catch(err => console.error('请求错误', err))
      .finally(() => setLoading(false));
  }, []);

  // 渲染逻辑和上方fetch实现一致
}
注意事项
  • 本地开发如果出现跨域报错,确认PHP接口的跨域头已经正确配置
  • 生产环境禁止将Access-Control-Allow-Origin设为*,需替换为你的前端正式域名
  • dbConfig.php不要放在Web服务的可公开访问目录下,避免数据库配置泄露
  • 涉及增删改操作的接口必须做参数校验、权限验证,避免SQL注入风险

内容的提问来源于stack exchange,提问作者Kruno Žagar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:48:04