本地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安装的情况),检查服务状态。
- Windows:打开「服务」(Win+R输入
- 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
相关产品推荐
相关产品推荐

