答案:PHP连接MySQL常用mysqli和PDO,推荐将数据库凭证存于Web根目录外的配置文件或环境变量中以提升安全性,连接失败时应检查服务状态、参数、权限、防火墙、扩展启用情况及日志信息。

PHP连接MySQL数据库的核心在于使用PHP提供的数据库扩展,最常用的是
mysqli
PDO
连接数据库,这听起来是件大事,但实际上,PHP为我们提供了相当直观的工具。我个人在项目中,更偏爱使用
PDO
mysqli
使用mysqli
这种方式感觉更符合现代PHP的编程习惯,也更易于管理。
立即学习“PHP免费学习笔记(深入)”;
<?php
$servername = "localhost"; // 数据库服务器地址,通常是localhost
$username = "your_username"; // 你的数据库用户名
$password = "your_password"; // 你的数据库密码
$dbname = "your_database"; // 你要连接的数据库名称
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
// 哎呀,连接失败了!这里通常会记录错误,而不是直接显示给用户
die("连接失败: " . $conn->connect_error);
}
echo "数据库连接成功 (mysqli)!";
// 执行查询的例子
// $sql = "SELECT id, firstname, lastname FROM MyGuests";
// $result = $conn->query($sql);
// if ($result->num_rows > 0) {
// while($row = $result->fetch_assoc()) {
// echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
// }
// } else {
// echo "0 结果";
// }
// 关闭连接,这是一个好习惯
$conn->close();
?>使用PDO
PDO
<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
try {
// 构建DSN (Data Source Name)
$dsn = "mysql:host=$servername;dbname=$dbname;charset=utf8mb4";
// 创建PDO实例
$conn = new PDO($dsn, $username, $password);
// 设置PDO错误模式为异常,这样可以更好地捕获和处理错误
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "数据库连接成功 (PDO)!";
// 执行查询的例子 (使用预处理语句更安全)
// $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests WHERE lastname = :lastname");
// $stmt->bindParam(':lastname', $lastname);
// $lastname = "Doe";
// $stmt->execute();
// $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// print_r($result);
} catch(PDOException $e) {
// 连接失败,同样,这里应该记录错误
die("连接失败: " . $e->getMessage());
}
// PDO连接在脚本执行完毕后会自动关闭,但你也可以显式地设置为null
$conn = null;
?>选择哪种方式,很多时候取决于你的项目需求和个人偏好。我发现对于新手来说,
mysqli
PDO
说实话,把数据库用户名和密码直接写在PHP文件里,就像上面示例那样,虽然方便,但在生产环境中绝对是个大忌。万一服务器被攻破,这些敏感信息就会暴露无遗。那么,我们应该怎么做才能更安全呢?
一个比较推荐的做法是将这些凭证放在Web服务器根目录之外的配置文件中。这样,即使Web服务器配置错误导致PHP文件内容被直接访问,这些凭证也不会被泄露。
可以创建一个
config.php
db_config.php
/var/www/html
/var/www/db_config.php
db_config.php (示例,放在Web根目录外):
<?php
// db_config.php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'your_username');
define('DB_PASSWORD', 'your_password');
define('DB_NAME', 'your_database');
?>然后在你的PHP脚本中,使用
require_once
<?php
// index.php 或你的任何其他PHP文件
require_once '/var/www/db_config.php'; // 注意路径,这里是示例路径
// 使用常量进行数据库连接
$conn = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "安全连接成功!";
$conn->close();
?>除了这种方式,还可以考虑使用环境变量。在服务器的配置文件(如Apache的
httpd.conf
nginx.conf
getenv()
连接数据库,有时就是会遇到各种奇奇怪怪的问题。我记得有一次,我花了好几个小时才发现是数据库服务根本就没启动!所以,遇到连接失败,不要慌,按照一定的思路来排查,通常都能找到问题所在。
sudo systemctl status mysql
sudo service mysql status
localhost
GRANT
'your_username'@'localhost'
mysqli
pdo_mysql
phpinfo()
mysqli
pdo_mysql
php.ini
extension=mysqli
extension=pdo_mysql
ping
error_log
/var/log/mysql/error.log
/var/log/mysqld.log
通常情况下,连接失败的错误信息会直接告诉你问题出在哪里,比如“Access denied for user...”就指向了用户名或密码错误,而“Can't connect to MySQL server on 'localhost'...”则可能意味着服务未启动或网络问题。所以,仔细阅读错误信息,往往能事半功倍。
以上就是PHP数据库连接基础教程_PHPMySQL连接详细步骤指南的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号