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

php数据库怎么实例化啊,跟着这教程一步步来超简单

主要参考W3School的PHP MySQLi教程、菜鸟教程的PHP数据库连接部分以及一些技术博客像PHP手册的实际应用例子,我把它们揉碎了讲给你听。

第一步:你得先有个“数据库”

想象一下,数据库就像一个巨大的、结构严谨的档案库,在你用PHP(也就是你的助手)去这个档案库取放东西之前,这个档案库必须已经存在,第一步不是在PHP里写代码,而是去创建它。

你会使用一个叫phpMyAdmin的工具(它一般和XAMPP、宝塔面板这类集成环境一起提供),或者直接用数据库的命令行。

  1. 打开你的phpMyAdmin(一般在浏览器输入 localhost/phpmyadmin)。
  2. 登录后,你会看到一个创建数据库的选项,给数据库起个名字,比如我叫它 my_test_db,字符集一般选 utf8mb4,排序规则选 utf8mb4_general_ci,这样能更好地支持中文,点击“创建”。
  3. 光有库还不行,还得有装数据的“桌子”,这个叫数据表,比如我想存用户信息,就创建一张叫 users 的表。
  4. 给这张表设计字段:id(整数,自动递增,设为主键)、username(用户名,字符串)、email(邮箱,字符串),把这些字段都设置好。

好了,你的“档案库”和“桌子”都准备好了,现在可以让PHP助手去干活了。

第二步:准备“钥匙”和“地址”——连接信息

要去档案库,你得知道地址、库房号(数据库名),还得有钥匙(用户名和密码),我们把它们先定义成变量,这样后面用起来方便。

<?php
$servername = "localhost"; // 服务器地址,通常就是本地,所以是localhost
$username = "root";        // 数据库用户名,安装后默认常常是root
$password = "";            // 数据库密码,默认初始可能是空,但强烈建议你设一个复杂的密码
$dbname = "my_test_db";    // 你刚才创建的数据库名字
?>

来源提示:几乎所有教程都会一开始就让你定义这四个变量,这是标准做法。

第三步:开始实例化连接——让PHP拿起钥匙开门

在PHP里,我们主要用两种方式跟MySQL数据库打交道:MySQLiPDO,我这里先用MySQLi的“面向对象”方式来讲,因为这个听起来高级,但其实理解了对象的概念后,特别直观,实例化,说白了就是创建一个“连接对象”。

// 接着上面的代码写
// 创建一个新的MySQLi连接对象,这个过程就是“实例化”
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功,这是非常非常重要的一步!
if ($conn->connect_error) {
    // 如果连接失败,用die()函数输出错误信息并停止脚本
    die("连接失败: " . $conn->connect_error);
} else {
    echo "数据库连接成功啦!棒棒的!";
}
?>

逐行解释一下:

  • new mysqli(...):这个 new 关键字就是在“创造”一个mysqli类型的对象,我们把创造出来的这个对象赋值给变量 $conn,以后我们所有对数据库的操作,比如查询、插入,都要通过这个 $conn 对象来进行,这就是“实例化”的核心。
  • $conn->connect_error:这是一个对象的属性(可以理解为对象的特征),如果连接有错误,这个属性里就存着错误信息。-> 这个符号是访问对象属性和方法的方式。
  • if ($conn->connect_error) { ... }:判断一下错误信息是否存在,如果存在,说明连接没成功。
  • die(...):出错了就立刻停止,并告诉你为什么错了,比如你密码输错了,这里就会显示出来。

你运行一下这段代码,如果看到“数据库连接成功啦!棒棒的!”,恭喜你,最核心的一步——实例化连接——已经完成了!

第四步:用实例化好的连接去干点活儿——执行SQL查询

连接好了,总不能闲着,我们来执行一个最简单的查询,从users表里取出所有数据”。

SQL是一种用来和数据库对话的语言,SELECT * FROM users 这句话的意思就是“从users表里选择所有列的所有记录”。

// 假设连接成功的代码是上面的 $conn
// 写好SQL查询语句
$sql = "SELECT id, username, email FROM users";
// 通过之前实例化的连接对象 $conn 的 query() 方法,来执行这个查询
// query() 是对象的方法(可以理解为对象能做的动作)
$result = $conn->query($sql);
// 检查查询是否成功并有没有返回结果
if ($result->num_rows > 0) {
    // 如果返回的记录行数大于0,说明有数据
    // 使用 fetch_assoc() 方法一行一行地取出数据,它返回一个关联数组
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - 名字: " . $row["username"]. " - 邮箱: " . $row["email"]. "<br>";
    }
} else {
    echo "哎呀,表里还没有数据呢,0 结果。";
}
?>

再来逐行解释:

  • $result = $conn->query($sql);:让连接对象 $conn 去执行 $sql 这个命令,返回的结果是一个结果集对象,我们把它存到 $result 变量里。
  • $result->num_rows:结果集对象的一个属性,表示有多少行数据。
  • while($row = $result->fetch_assoc())fetch_assoc() 方法每次从结果集里取出一行数据,变成数组赋值给 $row,直到取完为止。$row[“id”] 就是取当前行里”id”这个字段的值。

第五步:关门——关闭连接

就像你去图书馆看完书要离开一样,好的习惯是关闭连接,释放资源。

// 所有数据库操作都完成后,关闭连接
$conn->close();
echo “连接已关闭”;
?>

非常重要的一点:关于PDO方式

来源:PHP官方文档强烈推荐PDO的原因是其支持多种数据库,且对防止SQL注入有更好的默认支持。

刚才用的是MySQLi,还有一种更强大、更推荐的方式叫PDO,它的“实例化”过程稍微有点不一样,我也写一下,你可以对比看看:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_test_db";
try {
    // PDO的实例化,同样是 new 一个PDO对象
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置PDO错误模式为异常,这样出错会抛出异常,利于调试
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "PDO方式连接成功!";
}
catch(PDOException $e) {
    // 如果try里面的代码块出错了,就会跳到这里执行
    echo "PDO连接失败: " . $e->getMessage();
}
// 使用PDO进行查询的代码会有所不同,但连接实例化的部分就是这样。
?>

PHP数据库实例化的核心就是一句话:

使用 new 关键字,创建一个 mysqliPDO 的对象,并把数据库的地址、用户名、密码、数据库名这些信息传给它,创建出来的这个对象(比如叫 $conn),就是你后续所有数据库操作的起点和桥梁。

整个过程就像:申请权限(用户名密码) -> 找到大楼和房间(服务器和数据库) -> 用钥匙开门实例化连接(new mysqli(...))-> 在房间里办事(执行SQL)-> 离开关门(close())。

跟着这五步走一遍,你绝对能搞定PHP的数据库实例化,记得每一步的代码都要自己动手敲进去,然后运行看看结果,出错了就根据提示排查,这样学得最快!

php数据库怎么实例化啊,跟着这教程一步步来超简单