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

本地Apache环境下PHP与MariaDB数据库交互配置咨询

本地PHP与MariaDB交互指南

嘿,我完全懂你从服务器控制面板切换到本地环境的那种手足无措——毕竟面板把所有繁琐的配置都包办了,本地就得自己一步步来。不过别担心,本地PHP和MariaDB的交互逻辑和服务器上几乎一致,只是需要先搞定几个前提步骤,然后写代码就行。

一、先确认本地环境的几个前提

  • 确保MariaDB服务正在运行:
    • Windows:打开「服务」(Win+R输入services.msc),找到MariaDB服务,确认状态是「正在运行」。
    • Linux/macOS:终端输入systemctl status mariadb(Linux)或brew services list(macOS用brew安装的情况),检查服务状态。
  • PHP已安装MariaDB/MySQL扩展:
    打开PHP配置文件php.ini,找到extension=mysqli和extension=pdo_mysql两行,去掉前面的分号;,然后重启Apache服务。也可以创建phpinfo.php文件(内容为<?php phpinfo(); ?>),访问后搜索「mysqli」或「pdo_mysql」确认扩展已启用。
  • 创建本地数据库和授权用户:
    打开终端或MariaDB命令行工具,登录root用户:
    mysql -u root -p
    
    执行以下命令创建数据库和用户(替换成你自己的名称和密码):
    -- 创建数据库
    CREATE DATABASE my_local_db;
    -- 创建本地用户并设置密码
    CREATE USER 'local_user'@'localhost' IDENTIFIED BY 'your_strong_password';
    -- 授权用户访问该数据库的所有权限
    GRANT ALL PRIVILEGES ON my_local_db.* TO 'local_user'@'localhost';
    -- 刷新权限使设置生效
    FLUSH PRIVILEGES;
    

二、PHP与MariaDB交互的两种常用方式

1. 使用mysqli扩展(两种写法:面向过程/面向对象)

面向过程写法示例

<?php
// 数据库连接参数
$server = "localhost";
$user = "local_user";
$pass = "your_strong_password";
$db_name = "my_local_db";

// 建立连接
$conn = mysqli_connect($server, $user, $pass, $db_name);

// 检查连接是否成功
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "数据库连接成功<br>";

// 执行查询示例
$sql = "SELECT id, username FROM users";
$result = mysqli_query($conn, $sql);

// 处理查询结果
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "ID: {$row['id']} - 用户名: {$row['username']}<br>";
    }
} else {
    echo "暂无数据";
}

// 关闭连接
mysqli_close($conn);
?>

面向对象写法示例

<?php
$server = "localhost";
$user = "local_user";
$pass = "your_strong_password";
$db_name = "my_local_db";

// 建立连接
$conn = new mysqli($server, $user, $pass, $db_name);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功<br>";

// 执行查询
$sql = "SELECT id, username FROM users";
$result = $conn->query($sql);

// 处理结果
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: {$row['id']} - 用户名: {$row['username']}<br>";
    }
} else {
    echo "暂无数据";
}

// 关闭连接
$conn->close();
?>

2. 使用PDO扩展(推荐,支持多数据库)

PDO的优势是可以切换不同数据库而不用大幅修改代码,而且预处理语句的写法更统一,能有效防止SQL注入。

<?php
$server = "localhost";
$user = "local_user";
$pass = "your_strong_password";
$db_name = "my_local_db";

try {
    // 建立PDO连接
    $conn = new PDO("mysql:host=$server;dbname=$db_name;charset=utf8mb4", $user, $pass);
    // 设置错误模式为异常,方便调试
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "数据库连接成功<br>";

    // 预处理查询示例(防止SQL注入)
    $stmt = $conn->prepare("SELECT id, username FROM users WHERE id = ?");
    $stmt->execute([1]); // 传入参数

    // 获取结果
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($user) {
        echo "ID: {$user['id']} - 用户名: {$user['username']}";
    } else {
        echo "未找到该用户";
    }

} catch(PDOException $e) {
    echo "连接或查询失败: " . $e->getMessage();
}

// 关闭连接(PDO会自动关闭,也可以手动设置为null)
$conn = null;
?>

三、重要注意事项

  • 防止SQL注入:永远不要直接把用户输入拼接到SQL语句里,一定要用预处理语句(上面示例中PDO和mysqli都支持)。
  • 端口问题:如果你的MariaDB改了默认端口(不是3306),连接时需要加上端口参数,比如mysqli里$server = "localhost:3307",PDO里"mysql:host=$server;port=3307;dbname=$db_name"。
  • 错误调试:本地开发时,可以打开PHP的错误提示,在php.ini中设置display_errors = On和error_reporting = E_ALL,这样能快速看到连接或查询时的错误信息。

其实本质上,本地和服务器上的PHP与数据库交互逻辑是一样的,只是本地需要自己完成数据库用户创建、扩展启用这些服务器面板帮你做的事情而已。多试几次,很快就能上手啦!

内容的提问来源于stack exchange,提问作者Garcia Iglesias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:04:45