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

PHP怎么连数据库然后写数据,简单点操作步骤讲解

PHP 操作数据库就像是你让一个助手(PHP)去一个文件柜(数据库)里取东西或者存东西,为了让助手能完成这个工作,你需要做几件事:告诉助手文件柜在哪里(连接数据库),告诉助手要对哪个文件夹操作(选择数据表),然后给他具体的指令(增删改查的 SQL 语句),下面我们就一步步来。

第一步:准备好你的“文件柜”——数据库

在你写 PHP 代码之前,你得先有一个数据库,这个通常在你的网站空间提供商的后台(cPanel)里可以创建,或者如果你在自己电脑上测试,可能用的是 XAMPP 或宝塔面板之类的工具,假设你已经创建好了一个数据库,名字叫 my_test_db,里面有一张表叫 users,这张表有两个字段:idname

第二步:连接数据库——让助手找到文件柜

这是最关键的一步,如果连接不上,后面的一切都白搭,在 PHP 里,我们使用 mysqli 这个扩展来连接 MySQL 数据库(这是最常见的数据库类型),你需要四个信息才能连上:

  1. 数据库所在的服务器的地址(通常是 localhost,意思是就在同一台机器上)。
  2. 用户名(root)。
  3. 密码。
  4. 数据库名(刚才说的 my_test_db)。

连接数据库的代码长这样:

PHP怎么连数据库然后写数据,简单点操作步骤讲解

<?php
$servername = "localhost"; // 服务器地址
$username = "root";        // 数据库用户名
$password = "your_password"; // 数据库密码,自己电脑测试root可能没密码,就是空字符串""
$dbname = "my_test_db";    // 数据库名
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败啦: " . $conn->connect_error); // 如果失败,就显示错误信息并停止执行
}
echo "连接成功!"; // 成功的话会显示这个
?>

把上面代码里的 your_password 换成你数据库的真实密码,如果密码为空,就写成 $password = "";,这段代码运行后,如果看到“连接成功!”,恭喜你,第一步完成了,变量 $conn 就是你通往数据库的“通道”,后面的操作都要用它。

第三步:准备 SQL 语句——给助手下指令

现在通道有了,我们要告诉数据库干什么,我们是要写入数据,所以用的是 SQL 语言中的 INSERT 语句,假设我们要往 users 表里插入一条新数据,名字叫“张三”。

SQL 语句就是这样:

INSERT INTO users (name) VALUES ('张三')

在 PHP 里,我们把这个语句存到一个变量里,方便后面使用。

PHP怎么连数据库然后写数据,简单点操作步骤讲解

$sql = "INSERT INTO users (name) VALUES ('张三')";

如果你想插入变量,比如用户通过网页表单提交的名字,可以这样(假设用户提交的名字保存在变量 $user_name 里):

$user_name = "李四"; // 这个值通常是从 $_POST['name'] 这样的表单数据里来的
$sql = "INSERT INTO users (name) VALUES ('$user_name')";

重要提醒: 直接这样把变量放进 SQL 语句有严重的安全风险(叫做“SQL注入攻击”),坏人可以借此破坏你的数据库,在正式项目中,绝对不能这么做!正确的方法是使用“预处理语句”,下面会讲一个简单的例子。

第四步:执行指令并检查结果

指令准备好了,现在通过刚才建立的连接 $conn 来执行它,我们用 query() 方法。

if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功啦!";
} else {
    echo "出错啦: " . $sql . "<br>" . $conn->error;
}

$conn->query($sql) 这行代码就是真正执行插入操作的地方,如果返回 TRUE,说明成功了;如果返回 FALSE,说明失败了,我们可以用 $conn->error 来查看具体的错误信息是什么,方便调试。

PHP怎么连数据库然后写数据,简单点操作步骤讲解

第五步:关闭连接——让助手下班

所有操作都做完之后,一个好习惯是手动关闭数据库连接,释放资源。

$conn->close();

一个更安全一点的写法(预处理语句)

前面提到直接拼接变量有风险,这里给出一个简单的预处理语句的例子,这才是你应该在真实项目中使用的方法,还以插入名字为例:

// 假设名字来自用户输入,$_POST['username']
$user_name = "王五";
// 1. 准备SQL语句,用问号 `?` 占位,代表将来要插入的值
$sql = "INSERT INTO users (name) VALUES (?)";
// 2. 预处理语句
$stmt = $conn->prepare($sql);
// 3. 绑定参数。 "s" 表示我们要传入的值是字符串(string)类型,如果有多个参数,比如还有年龄(整数),就用 "si"。
$stmt->bind_param("s", $user_name);
// 4. 执行语句
if ($stmt->execute()) {
    echo "新记录插入成功啦!(安全版)";
} else {
    echo "出错啦: " . $stmt->error;
}
// 5. 关闭预处理语句和连接
$stmt->close();
$conn->close();

这个写法虽然多了一两步,但它把数据和指令分开了,就像把信纸和信封分开处理一样,从根本上防止了 SQL 注入,非常安全。

总结一下最简单的操作步骤:

  1. new mysqli(...) 连上数据库,得到 $conn
  2. 写好你的 INSERT INTO ... SQL 语句,存到 $sql 变量里。强烈建议用预处理语句的方式写
  3. $conn->query($sql) 或预处理语句的 execute() 方法来执行。
  4. 根据返回结果判断成功还是失败。
  5. $conn->close() 关闭连接。

你就把这五步当成一个固定的流程,每次要写数据的时候,就按照这个流程走一遍,刚开始可能会觉得有点绕,多写几次就熟悉了,最重要的是,一定要记住使用预处理语句来保证安全,这是新手最容易忽略也最重要的一点。