当前位置: 首页 > backend >正文

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

使用MySQLi扩展

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

step1:连接数据库

<?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 等字段,以下是插入一条学生记录的示例代码。

 $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:查询数据

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

step4:修改数据

 $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:删除数据

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

step6:关闭连接

$conn->close();

源码整合

<?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" }}*/
?>
http://www.xdnf.cn/news/3398.html

相关文章:

  • d202551
  • QMK固件烧录指南:安全高效地更新您的机械键盘
  • Python结合QT进行开发
  • 西门子数字化研发设计制造一体化规划案例P87(87页PPT)(文末有下载方式)
  • 神经网络—损失函数
  • Python 数据智能实战 (6):用户评论深度挖掘
  • OpenGL-ES 学习(10) ---- OpenGL-ES Shader语言语法
  • CMake中强制启用option定义变量的方法
  • Unity SpriteEditor(精灵图片编辑器)
  • C++笔记-继承(下)(包含派生类的默认成员函数,菱形继承等)
  • AJAX 实例
  • vscode 的空格和 tab 设置 与 Rime 自建词库
  • AI大模型基础设施:主流的几款开源AI大语言模型的本地部署成本
  • 企业内训|智能驾驶与智能座舱技术——某汽车厂商
  • Ubuntu18 登录界面死循环 Ubuntu进不了桌面
  • 初学Vue之记事本案例
  • 【Linux】VSCode用法
  • 【嵌入式———通用定时器基本操作——实验需求2:案列:测量PWM的频率/周期】
  • 用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]
  • 构建现代分布式云架构的三大支柱:服务化、Service Mesh 与 Serverless
  • 第十一届蓝桥杯 2020 C/C++组 门牌制作
  • vue 常见ui库对比(element、ant、antV等)
  • 兰亭妙微:数据驱动的 B 端设计:如何用 UI 提升企业级产品体验?
  • 【Qt】网络
  • ZYNQB笔记(十六):AXI DMA 环路测试
  • FreeSWITCH 发送 sip message 的 lua 程序
  • 深挖Java基础之:变量与类型
  • 总结C++中的STL
  • 分布式事务,事务失效,TC事务协调者
  • 图数据库榜单网站