网络安全零基础培训 L1-9 PHP连接MySQL数据库

使用MySQLi扩展

MySQLi 是 "MySQL Improved Extension" 的缩写,它是 PHP 用于与 MySQL 数据库进行交互的扩展。

step1:连接数据库

php 复制代码
<?php
    // 定义数据库服务器的地址,通常 localhost 表示本地服务器
    $servername = "服务器地址";
    // 数据库用户名,这里使用的是 root 用户,实际中应避免使用 root 作为普通数据库用户,出于安全考虑
    $username = "你的密码";
    // 数据库用户的密码,这里需要替换为你自己的数据库密码
    $password = "你的密码";
    // 要连接的数据库的名称,这里需要替换为你自己的数据库名称
    $dbname = "数据库名称";
    
    // 使用 mysqli 类创建一个数据库连接对象,传递服务器地址、用户名、密码和数据库名称作为参数
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检查连接是否成功
    if ($conn->connect_error) {
        // 如果连接出现错误,使用 die() 函数终止脚本的执行,并输出连接失败的信息及具体错误信息
        die("连接失败: ". $conn->connect_error);
    }
 ?>

step2:插入数据

假设存在名为 students 的表,有 id(自增主键)、name、age 等字段,以下是插入一条学生记录的示例代码。

php 复制代码
 $name = "John";
 $age = 20;
 $sql = "INSERT INTO students (name, age) VALUES ('$name', $age)";
 // query() 是 mysqli 对象的一个方法,用于执行一个 SQL 语句。 
// 使用语法: 数据库链接名.query(SQL 语句)
 if ($conn->query($sql) === TRUE) {
    // 如果 $conn->query($sql) 的执行结果严格等于 TRUE,表示 SQL 语句执行成功
    echo "新记录插入成功";
 } else {
    // 如果 $conn->query($sql) 的执行结果不等于 TRUE,表示 SQL 语句执行失败
 echo "插入数据出错: ". $conn->error;
    // $conn->error 存储了执行 SQL 语句时发生错误的具体信息,将其输出以帮助排查问题
}

step3:查询数据

php 复制代码
 // 定义一个 SQL 查询语句,用于从 students 表中选择所有行
$sql = "SELECT * FROM students";
 // 使用 $conn 对象的 query 方法执行 SQL 查询语句,并将结果存储在 $result 变量中
$result = $conn->query($sql);
 // 检查 $result 结果集的 num_rows 属性,该属性表示结果集中的行数。检查查询结果的行数是否大于 0
 if ($result->num_rows > 0) {
    // 使用 fetch_all 方法将结果集转换为一个二维数组,其中每个元素是一个关联数组,代表一行数据
    $rows = $result->fetch_all(MYSQLI_ASSOC);

step4:修改数据

php 复制代码
 $new_age = 21;
 $name = "John";
 $sql = "UPDATE students SET age = $new_age WHERE name = '$name'";
 if ($conn->query($sql) === TRUE) {
    echo "记录更新成功";
 } else {
    echo "更新数据出错: ". $conn->error;
 }

step5:删除数据

php 复制代码
 $name = "John";
 $sql = "DELETE FROM students WHERE name = '$name'";
 if ($conn->query($sql) === TRUE) {
    echo "记录删除成功";
 } else {
    echo "删除数据出错: ". $conn->error;
 }

step6:关闭连接

php 复制代码
$conn->close();

源码整合

php 复制代码
<?php
    //1.我的地址 2.数据库的账号 3.数据库的密码  4.数据库的仓库
    //mysql
    //ip 本机的地址    name数据库的账号   password数据库的密码  db:数据仓
库
    $ip = "localhost";  //localhost 代表的本地服务器
    $name = "root";
    $password = "root";
    $db = "a1";
    //创建数据库的链接  mysqli
    $conn = new mysqli($ip,$name,$password,$db);
    if($conn -> connect_error){
        //die是在连接后,如果连接失败,会终止后边的所以程序
        die("连接失败!");
    }else{
        echo "连接成功!";
    }
    echo "<br>";
    //增加数据  查询数据  修改数据  删除数据
    insert into bb(id,name,age) values(1,'刘小',18);
    $inset = "insert into bb(id,name,age) values(4,'景名',28);";
    //query()   执行这个函数后,会返回一个执行的结果成功true,失败false
    $res = $conn -> query($inset);
    var_dump($res);
   if($res===true){
        echo "数据插入成功";
    }else{
        echo "数据插入失败";
    }
    //查询数据 a1 select * from bb;
    $select = "select * from bb;";
    $res = $conn->query($select);
    echo $res->num_rows;
    if($res->num_rows>0){
        echo "查询成功";
        //展示查询到的数据 ,从res获取
        $rows = $res->fetch_all(MYSQLI_ASSOC);  //获取查询到的数据,生成一个二维的数组
        var_dump($rows);  //查询到的详细数据
    }else{
        echo "查询失败";
    }
    //修改 update bb set name="张山" where id=4;
    $update = 'update bb set name="张山" where id=4;';//设置变量 ,然后我们去执行
    //($conn -> query($update));//通过当前的数据库连接去执行修改的sql语句
    if($conn -> query($update)  === true){
   		echo "修改成功";
	}else{
   		echo "修改失败";
    }
	//删除语句 delete from bb where id=4;
    $del = "delete from bb where id=4;";
    if($conn -> query($del) === true){
        echo "删除成功";
    }else{
        echo "删除失败";
    }
/*创建数组
    array(9) {
    [0]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(6) 
"刘小" ["age"]=> string(2) "18" }
    [1]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(6) 
"刘小" ["age"]=> string(2) "18" }
    [2]=> array(3) { ["id"]=> string(1) "2" ["name"]=> string(6) 
"宥宥" ["age"]=> string(1) "3" }
    [3]=> array(3) { ["id"]=> string(1) "2" ["name"]=> string(6) 
"宥宥" ["age"]=> string(1) "3" }
    [4]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(6) 
"怼怼" ["age"]=> string(2) "23" }
    [5]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(6) 
"怼怼" ["age"]=> string(2) "23" }
    [6]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(6) 
"怼怼" ["age"]=> string(2) "23" }
    [7]=> array(3) { ["id"]=> string(1) "3" ["name"]=> string(6) 
"怼怼" ["age"]=> string(2) "23" }
    [8]=> array(3) { ["id"]=> string(1) "4" ["name"]=> string(6) 
"景名" ["age"]=> string(2) "28" }
    }*/
?>
相关推荐
白帽攻防录6 小时前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
꯭自꯭闭꯭6 小时前
达梦SQL优化相关
linux·运维·数据库·sql
对空六课6 小时前
支持注意力分析的热力图工具有哪些?
前端·数据库·数据分析
南京码讯光电技术有限公司7 小时前
How to Design an Antenna System for an Industrial WiFi Module
数据库·人工智能
狗凯之家源码网7 小时前
淘客口令落地页生成器 PHP 版深度评测
开发语言·php
画绛集美术7 小时前
本地化部署LLM用于美术史问答:一间美术教室的实践记录
开发语言·php
lusklusklusk8 小时前
Oracle数据库基础之2_体系结构
数据库·oracle
可乐ea8 小时前
从第一性原理构建 AI Agent:提示词、工具、技能与记忆全解剖
数据库·人工智能·工具调用·ai智能体·提示词工程·agent开发·智能体记忆
东方护航数据恢复(深圳)8 小时前
医疗案例:HIS/PACS 数据库页损坏修复,医院不停诊完成恢复【东方护航数据恢复深圳店】
数据库·数据恢复·医疗·二次开盘
lusklusklusk9 小时前
Oracle数据库基础之11_Duplicate和Dataguard和RAC
数据库·oracle