网络安全零基础培训 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(自增主键)、nameage 等字段,以下是插入一条学生记录的示例代码。

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" }
    }*/
?>
相关推荐
马尔代夫哈哈哈5 小时前
Spring IoC&DI
数据库·sql
液态不合群6 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
计算机毕设VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瀚高PG实验室7 小时前
PostgreSQL到HighgoDB数据迁移
数据库·postgresql·瀚高数据库
打码人的日常分享8 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
三水不滴8 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
-孤存-9 小时前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
2301_822366359 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
上海云盾安全满满11 小时前
什么是端口管理,网络安全的关键环节
安全·web安全
万邦科技Lafite11 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台