当前位置:首页 > 问答 > 正文

PHP怎么连接数据库啊,新手也能看懂的简单教程分享

(根据博客园、菜鸟教程、W3School等常见新手学习资源整理)

你是不是刚学PHP,想做个能存东西、能显示东西的网站?那第一步肯定就是让PHP和数据库“搭上话”,别怕,这个听起来很专业,其实特别简单,就跟去邻居家串门一样,只要知道地址、门牌号和密码就行了,今天咱们就一步一步来,保证你看完就能自己动手连上。

咱们用的数据库是MySQL,这是和PHP配合最多的老搭档了,连接方法现在主流的有两种,一种是老一点的MySQLi,另一种是更现代、更受推荐的PDO,别被缩写吓到,你就把它们想象成两种不同的“通话方式”,都能说上话,只是PDO功能更强一点,能跟更多种类的数据库(比如SQLite、PostgreSQL)聊天,今天我们先从最常用、最简单的MySQLi的“面向过程”方式开始,这个最直观。

第一步:准备好“敲门”的信息

你要去别人家,总得知道人家住哪儿吧?连接数据库也需要四个关键信息,我管它们叫“敲门四件套”:

PHP怎么连接数据库啊,新手也能看懂的简单教程分享

  1. 服务器地址(server name):数据库在哪台电脑上,如果数据库就在你自己电脑(本地)上,那这个地址通常是 localhost 或者 0.0.1
  2. 用户名(username):你的数据库账号,本地常用的默认用户是 root
  3. 密码(password):就是这个账号的密码,如果是刚安装的环境(比如XAMPP、PHPStudy),密码可能为空。
  4. 数据库名(database name):你要进哪个房间,一个数据库软件里可以有很多个数据库,你得指定一个,我们假设你已经用phpMyAdmin或者其他工具创建好了一个叫 my_database 的数据库。

把这四个信息记在小本本上,等下要用。

第二步:开始“敲门”——建立连接

在PHP里,我们用 mysqli_connect() 这个函数来敲门,它的写法是这样的:

<?php
$servername = "localhost";
$username = "root";
$password = ""; // 如果你的密码是123456,那就改成 $password = "123456";
$dbname = "my_database";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查连接是否成功
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "连接成功!";
?>

我来解释一下这几行代码在干嘛:

PHP怎么连接数据库啊,新手也能看懂的简单教程分享

  • 前四行,就是把我们准备好的“敲门四件套”放进四个变量里,方便使用。
  • $conn = mysqli_connect(...) 这一行,就是PHP伸出手去敲数据库的门了,它会把连接的结果(成功还是一个错误)放进 $conn 这个变量里。
  • if (!$conn) {...} 这一部分特别重要!这是在检查门敲没敲开。!$conn 的意思是“如果连接不成功”,如果失败了,die() 函数会让脚本停止,并且用 mysqli_connect_error() 这个函数告诉你失败的原因是什么(比如密码错了?数据库不存在?),这对我们排查错误超级有帮助!
  • 如果连接成功了,就会开心地显示“连接成功!”。

你可以先把这段代码保存成一个PHP文件(test_connection.php),然后在浏览器里打开它,如果看到“连接成功!”,恭喜你,门已经敲开了!

第三步:进屋聊点正事——执行SQL查询

光站在门口可不行,我们得进去干点活,比如从桌子上拿一张纸(查询数据),或者往本子上写点东西(插入数据),这就需要用到SQL语句了,别紧张,我们先学一个最简单的:查点东西出来。

假设我们数据库里有一张表叫 users,里面有 idname 两列,我们想把它里面所有的用户名字都拿出来显示在网页上。

PHP怎么连接数据库啊,新手也能看懂的简单教程分享

// ... 接在刚才的连接成功代码后面 ...
$sql = "SELECT id, name FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    // 开始一行一行地输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - 名字: " . $row["name"]. "<br>";
    }
} else {
    echo "0 结果";
}

这段代码又是在干嘛呢?

  • $sql = "SELECT ...":这行就是我们要交代给数据库办的事,用SQL语言写的,意思是“从users表里把id和name选出来”。
  • $result = mysqli_query($conn, $sql):这行是PHP把这件事($sql)告诉数据库连接($conn),数据库办完事后,会把结果(比如找到的所有行)打包成一个“结果集”,放在 $result 变量里。
  • mysqli_num_rows($result) 是看看这个结果集里面有多少行数据,如果大于0,说明有数据。
  • while($row = mysqli_fetch_assoc($result)) 这一行是核心!它就像从结果集里一行一行地取数据,每取一行,就放进 $row 这个数组里。$row["id"] 就是当前这行的id值,$row["name"] 就是name值,直到所有行都取完,循环结束。
  • 我们把每一行的信息都打印出来。

第四步:聊完天,别忘了“关门”——关闭连接

这是一个好习惯,虽然脚本执行完通常会自己关闭,但我们主动关上更保险。

mysqli_close($conn);

就这样,一个完整的流程就走完了:准备信息 -> 敲门连接 -> 执行查询 -> 处理结果 -> 关门。

非常重要的一点提醒(根据CSDN、知乎等平台常见安全文章强调)

你可能会在网上看到一些很老的教程用的是 mysql_ 开头的函数(mysql_connect),千万不要学那个! 那种方式不仅老了,而且非常不安全,很容易被黑客“SQL注入”攻击,我们现在学的 MySQLi 里的 i 就代表了改进(improved),更安全更好用。

好了,这就是一个超级简单的PHP连接MySQL数据库的流程,你完全可以把这个代码复制过去,把你自己的数据库名、用户名和密码改对,就能跑起来了,多试几次,遇到错误别慌,看看 die() 函数报了什么错,一般都是密码不对或者数据库名写错了,动手试试吧!