【PHP程序设计(高阶版)】——PHP操作MySQL教程

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶(1) MySQLi(面向对象过程)
      • 🐤1.建立数据库(mysqli_connect)
      • 🐤2.执行SQL(mysqli_query)
    • 🎶(2) 执行SQL(mysqli_queryM)
      • 🐤1.处理返回结果
      • 🐤2.关闭连接
    • 🎶(3)MySQLi(面向对象)
      • 🐤1.创建连接
      • 🐤2.执行SQL
      • 🐤3.处理返回结果
      • 🐤4.关闭连接
        • 结束语🥇


前言

  PHP提供了 MySQL扩展、MySQLi扩展和PDO(PHP Data 0bjects)三种方式与MSQL数据库交互。在互联网上很多资料使用的是 MySQL扩展,但是PHP7已不再女持MySQL扩展函数,因此本任务使用MySQLi扩展和PDO来操作MySQL数据库,其中MySOL扩展又分为面向过程方式和面向对象方式。那么在实际应用中应该选择哪种方式呢?建议熟悉哪个就用哪个。MySQLi和PDO有各自的优势,具体如下:
  ① PDO 适合多种流行的数据库。
  ② MySOLi 只适合 MYSOL 数据库,
  所以,如果项目需要在多种数据库中切换,建议使用PDO,这样只需要修改连接字符串和部分查询语句即可。使用MVSOL,如果数据库不同,需要重新编写所有代码。同时,MvSOLi和 PDO 都是面向对象,但 MySOLi 还提供了面向过程的 API接口。
PHP与数据库交互主要有以下四个步骤:
  ①创建连接:连接 MYSOL服务器中的数据库。
  ②执行 SOL:编写 SOL语句,并执行 SQL语句,得到返回结果。
  ③处理返回结果。
  ④释放结果集,关闭数据库连接。


🎶(1) MySQLi(面向对象过程)


🐤1.建立数据库(mysqli_connect)

mydsqli_connect函数创建一个到MySQL数据库的连接,其语法格式如下:

mysqli_connect(host ,username ,password,dbname,port);

函数参数说明如下:
  ①host :指要连接的数据库的主机名和IP地址,如果是本地可以使用localhost或者127.0.0.1。
  ②username :指登录数据库的用户名。
  ③password:指登录数据库的密码。
  ④dbname:指要连接的数据库。
  ⑤port:指数据库的端口号,默认值为3306,可以不写。

如果连接成功,函数返回一个代表到MySQL数据库的连接对象;如果连接失败,函数返回false以及警告或错误提示。下面案例一会显示会显示连接数据库成功和失败的信息。
案例一:创建数据库的连接:

<?php
//创造数据库shop连接
$connl=mysqli_connect('localhost','root','123456','shop');
echo"打印连接对象<br/>";
var_dump($connl);
echo"<br/>----------------------------------------------------------------<br/>";
echo "创建数据库shop连接,使用错误密码";
$conn2=mysqli_connect('localhost','root','root','shop');
if(!$conn2)//连接失败
{
	echo mysqli_connect_error();
}
echo"<br/>----------------------------------------------------------------<br/>";
echo "创建数据库shop连接,使用错误数据库名称";
$conn3=mysqli_connect('localhost','root1','123456','shop');
if(!$conn3)//连接失败
{
	echo mysqli_connect_error();
}
?>

运行效果展示:

在这里插入图片描述

🐤2.执行SQL(mysqli_query)

执行SQL包括两个步骤,一遍写SQL语句,一是调用mysqli_query函数执行SQL语句:

mysqli_query(’ connection’,‘query’,‘resultmode’)

函数参数说明如下:
  ①connection:必写,指已连接的数据库。
  ②query:必写,指要查询的字段,即SQL语句。
  ③resultmode:可以不写,一个常数,默认值是MYSQLI_ASSOC。
  针对select语句查询,将返回一个结果集对象(空表也返回一个结果集对象),如果失败,则返回false。针对更新(增加,修改,删除)操作如果成功,返回true,或者返回false。案例二显示执行SQL语句成功和失败的信息。

案例二:执行SQL语句:

<?php
//创造数据库shop连接
$conn=mysqli_connect('localhost','root','123456','shop');
if(!$conn)//连接失败
{
	echo mysqli_connect_error();
	exit;//后面不执行
}

//查询操作
$sql="select * from goods";
$rs=mysqli_query($conn,$sql);
echo"<pre>";
var_dump($rs);

//增加的操作
$sql="insert into goods(names,price,img) values('华为导弹','3000','images/3.jpg')";
$rs=mysqli_query($conn,$sql);
echo"<br/>打印增加数据成功后的返回的结果<br/>";
var_dump($rs);
//增加的操作,设置主键id的冲突
$sql="insert into goods(names,price,img) values(3,'华为导弹','3000','images/3.jpg')";
$rs=mysqli_query($conn,$sql);
echo"<br/>打印增加数据成功后的返回的结果<br/>";
var_dump($rs);
?>

运行效果展示:
在这里插入图片描述


🎶(2) 执行SQL(mysqli_queryM)


🐤1.处理返回结果

  在处理数据库返回的结果中存在两种形式:一种是执行查询语句返回的结果集对象:一种是更新操作(增加、删除、修改)返回的布尔类型。这里仅介绍如何处理返回的结果集对象,至于更新操作返回的布尔类型(影响行数),与一般的判断操作类似,这里不做过多描述。
  MySQL 扩展提供 mysqli_fetch_all(result,resultype)、mysqli_fetch_row(result)、 mysqlifetch_assoc(result)、mysqli _fetch_array(result,resulttype)mysqli_fetch_objeet(result)mysqli_num_rows(result)等函数用于操作结果集。上面的方法都要传入由 mysqli_query 执行 SQL 查询语句返回的结果集。函数执行区别如下:
  (1)mysqli_fetch_all:函数从结果集中取得所有行作为数组,默认返回索引数组即返回的是一个二维数组,下标都是数字。如果想要返回关联数字,即键名为数据库表中的字段名,需要设置第二个参数为 MYSOLI_ASSOC。

案例三:mysqli _fetchz_all函数

<?php
//创造数据库shop连接
$conn=mysqli_connect('localhost','root','123456','shop');
if(!$conn)//连接失败
{
	echo mysqli_connect_error();
	exit;//后面不执行
}
//查询操作
$sql="select * from goods";
$rs=mysqli_query($conn,$sql);
$goods=mysqli_fetch_all($rs);
echo"<br/>默认返回索引数组<br/>";
var_dump($goods);

$rs=mysqli_query($conn,$sql);
$goods=mysqli_fetch_all($rs,MYSQLI_ASSOC);
echo"<br/>设置MYSQLI_ASSOC,返回关联数组<br/>";
var_dump($goods);
?>

运行效果展示:
在这里插入图片描述

🐤2.关闭连接

  关闭数据库之前,建议先释放结果集资源,否则结果集将会一直驻留在内存中。释放结果集的函数如下:

mysql_free_result(result );

  释放结果集后,不能再访问结果集对象,否则程序将会报错。函数mysql_free_result无返回值。
关闭连接的函数如下:

mysql_close( connection);

  如果关闭成功,返回值为true,如果关闭失败,则返回值false。
  虽然先关闭连接再释放结果集,在php中都可以,但是为了养成一个好习惯,建议先关闭连接再去释放结果集。


🎶(3)MySQLi(面向对象)


🐤1.创建连接

  与面向过程方式创建连接类似,如果连接成功,new mysql()将返回一个代表到MySQL数据库的连接的对象:如果连接失败,函数返回false,并给出警告或错误提示。
案例四:创建数据库连接

<?php
//连接数据库
$conn=new mysqli('localhost','root','123456','shop');
//检测连接,如果创建连接成功,connect_error为null
//如果创建失败connect_error保存错误提示
if($conn->connect_error){
	echo "连接失败:".$conn->connect_error;
}else{
	var_dump($conn);
}
echo "<br/>----------------------------------------<br/>";
  //创建数据库shop连接,密码错误
  $conn=new mysqli('localhost','root','root','shop');
  //检测连接,如果创建连接成功,connect_error为null
  //如果创建失败connect_error保存错误提示
  if($conn->connect_error){
  	echo "连接失败:".$conn->connect_error;
  }else{
  	var_dump($conn);
  }
echo "<br/>----------------------------------------<br/>";
  //创建数据库shop连接,密码和数据库错误
  $conn=new mysqli('localhost1','root','root','shop');
  //检测连接,如果创建连接成功,connect_error为null
  //如果创建失败connect_error保存错误提示
  if($conn->connect_error){
  	echo "连接失败:".$conn->connect_error;
  }else{
  	var_dump($conn);
  }
?>

运行结果的显示:
在这里插入图片描述

🐤2.执行SQL

  执行SQL包括两个步骤:一个是编写SQL语句;二是调用连接对象中的query方法执行SQL语句: c o n n − > q u e r y ( conn->query( conn>query(sqrl);
  针对select语句查询,将返回一个结果集对象(空表也返回一个结果集对象),如果失败,则返回false。针对更新(增加,修改和删除)操作,如果成功返回true。
案例五:执行SQL语句

<?php
<?php
//连接数据库
$conn=new mysqli('localhost','root','123456','shop');
//检测连接,如果创建连接成功,connect_error为null
//如果创建失败connect_error保存错误提示
if($conn->connect_error){
	exit( "连接失败:".$conn->connect_error);
}
$sql="select * from goods";
//执行查询sql语句
$rs=$conn->query($sql);
echo "<br/>打印查询成功后的返回结果<br/>";
var_dump($rs);

//增加操作
$sql="insert into goods(names,price,img) values('华为路由','50','imgages/4.jpg')";
$rs=$conn->query($sql);
echo "<br/>打印增加数据成功后的返回结果<br/>";
var_dump($rs);
//增加失败操作
$sql="insert into goods(names,price,img) values(1,'华为路由','50','imgages/4.jpg')";
$rs=$conn->query($sql);
echo "<br/>打印增加数据失败后的返回结果<br/>";
var_dump($rs);
?>

运行结果:
在这里插入图片描述

🐤3.处理返回结果

  MySQL面向对象结果集类处理方法与面向过程类似,常用方法表:

方法返回结果
fetch_all (resulttype)right-aligned 文本居右
fetch_array (resulttype)以一个关联数组、索引数组、或者两者皆有的方式返回一行结果
fetch_object ( )以对象方式返回一行结果
fetch_row ( )以索引数组方式返回一行结果
fetch_assoc ( )以关联数组方式返回一行结果

本知识点仅仅以fetch_all方式举列。
案列六:

<?php
//连接数据库
$conn=new mysqli('localhost','root','123456','shop');
//检测连接,如果创建连接成功,connect_error为null
//如果创建失败connect_error保存错误提示
if($conn->connect_error){
	exit( "连接失败:".$conn->connect_error);
}
$sql="select * from goods";
//执行查询sql语句
$rs=$conn->query($sql);
$goods=$rs->fetch_all(MYSQLI_ASSOC);
var_dump($goods);
?>

运行结果:
在这里插入图片描述

🐤4.关闭连接

  关闭数据库之前,建议先释放结果集资源,否则结果集将会一直驻留在内存中。释放结果集的函数如下:

$rs->free( );

  释放结果集后,不能再访问结果集对象,否则程序将会报错,方法free无返回值。
关闭连接的方法如下:

$conn->close();

  如果关闭成功将会返回true,如果关闭失败将会返回false。
  虽然先关闭连接再释放结果集,在php中都可以,但是为了养成一个好习惯,建议先关闭连接再去释放结果集。

结束语🥇

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/536405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux Ubantu安装配置教程

Ubuntu是一个基于Linux的开源操作系统&#xff0c;它遵循GNU通用公共许可证&#xff0c;用户可以自由使用、复制、分发和修改。它提供直观易用的桌面环境&#xff0c;适合新手和有经验用户。Ubuntu有强大的软件中心&#xff0c;支持多硬件架构&#xff0c;注重安全和稳定&#…

Hidl 学习总结 2

1、Android apk 调用Hidl处理 app添加对应的hidl jar包 2、MainActivity 添加如下代码 package com.example.test2;import androidx.appcompat.app.AppCompatActivity; import vendor.hardware.test.V1_0.ITest; import vendor.hardware.test.V1_0.ITestCmdCallback; import …

【精品PPT】智慧路灯大数据平台整体建设实施方案(免费下载)

1、知识星球下载&#xff1a; 如需下载完整PPTX可编辑源文件&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/19QeHVt8y 2、免费领取步骤&#xff1a; 【1】关注公众号 方案驿站 【2】私信发送 【智慧路灯大数据平台】 【3】获取本方案PDF下载链接&#xff0c;直…

前端之Vuex

主要解决租价之间传值的问题。 npm install vuex3/4state:用于存储应用程序的状态数据 mutations:用于修改状态数据&#xff0c;外部不要直接对state进行修改。 getter:对状态数据进行处理例如过滤操作。 action:异步操作&#xff0c;网络请求是异步操作&#xff0c;该步骤在a…

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅱ)搜索及数据获取配置项

搜索及数据获取配置项 搜索及数据获取配置项属性&#xff1a; noSearchModel&#xff08;无表单搜索标识&#xff09;属性&#xff1a;changeToSearch&#xff08;表单change事件是否触发搜索 &#xff09;属性&#xff1a; changeParams&#xff08;参数预处理【可异步】 &…

智慧园区平台再升级!智慧迭代,服务升级

伴随物联网、人工智能等技术的迅速发展和智能化水平的提高&#xff0c;智慧园区成为了现代区域经济高质量发展的重要组成部分&#xff0c;上承智慧城市的建设&#xff0c;下接智慧运营和管理。智慧园区是一种基于信息技术的智能化管理模式&#xff0c;通过物联网、大数据、人工…

Day05-SHELL自动化编程-数组-三剑客进阶

Day05-SHELL自动化编程-数组-三剑客进阶 14 Shell编程-数组14.1 概述14.2 Shell数组赋值14.3 案例14.4 小结 15. Shell-编程-Debug全流程15.1 书写习惯15.2 调试方法 16. 再战三剑客16.1 sed与变量16.2 awk1&#xff09;指哪打哪-案例2&#xff09;awk的判断与循环3&#xff09…

【HDFS存储】Java语言实现

Hadoop生态系统中包含多种与其相关联的技术应用&#xff0c;主要包括但不限于HDFS HDFS&#xff08;Hadoop Distributed File System&#xff09;&#xff1a;作为一个高度可靠、高吞吐量的分布式文件系统&#xff0c;它是Hadoop核心技术之一&#xff0c;用于存储海量数据。 J…

ubuntu如何截图? ubuntu中截屏的三种方法

文章目录 1.ubuntu主要用途2.ubuntu如何截图&#xff1f;2.1 方法一&#xff1a;键盘按键快捷键截屏 2.2 方法二&#xff1a;系统自带软件2.3 方法三&#xff1a;第三方软件 Reference 1.ubuntu主要用途 1、桌面操作系统&#xff1a;Ubuntu可用作个人电脑或笔记本电脑的操作系…

将Ubuntu18.04默认的python3.6升级到python3.8

1、查看现有的 python3 版本 python3 --version 2、安装 python3.8 sudo apt install python3.8 3、将 python3.6 和 3.8 添加到 update-alternatives sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --insta…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

聚焦价值提升与市场扩张,ATFX任命Ergin Erdemir为拉丁美洲地区负责人

日前&#xff0c;全球知名品牌ATFX宣布一项重磅人事任命&#xff0c;Ergin Erdemir履新拉丁美洲地区负责人。我们相信通过这一重要战略举措&#xff0c;能够加强品牌在全球最具活力地区之一的拉美业务增长的承诺&#xff0c;并巩固品牌在当地的知名度和影响力。 Ergin Erdemi…

【noVNC】使用noVNC实现浏览器远程VNC(基于web的远程桌面)

一、操作的环境 windows 10系统乌班图 Ubuntu 22 二、noVNC 部署方式 原理&#xff1a;开启 Websockify 代理来做 WebSocket 和 TCP Socket 之间的转换 2.1 noVNC和VNC服务端同一台机器 使用方式&#xff0c;查看另一篇博文 &#xff1a;【noVNC】使用noVNC实现浏览器网页访…

锐化空间滤波器--二阶微分图像增强(提高清晰度的另一种方式)

书上一阶微分的定义可以理解&#xff0c;毕竟这里不死数学上的曲线的概念&#xff0c;而是像素点上的曲线。所以&#xff0c;不同于数学的严格单调递增曲线的导数是大于等于零&#xff0c;这里的严格单调递增曲线&#xff0c;只能是大于零。 至于二阶微分的定义&#xff0c;就…

虚拟机中,IP地址查询失败怎么办

有时候ifconfig查出来的地址是下面这样&#xff0c;只有ipv6 只需要运行下面这两条命令&#xff0c;再次查询即可成功&#xff01; systemctl stop NetworkManagersystemctl start network.service

RISC-V特权架构 - 模式切换与委托

RISC-V特权架构 - 模式切换与委托 1 导致模式切换的常见动作2 异常处理规则3 异常处理时模式切换3.1 在U模式下&#xff0c;发生异常3.2 在S模式下&#xff0c;发生异常3.3 在M模式下&#xff0c;发生异常 4 系统调用时模式切换5 中断处理时模式切换 本文属于《 RISC-V指令集基…

第6章 6.3.1 正则表达式的语法(MATLAB入门课程)

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 正则表达式可以由一般的字符、转义字符、元字符、限定符等元素组…

三十 超级数据查看器 教程 详情界面的便捷功能

三十 超级数据查看器 教程 详情界面的便捷功能 ​点击此处 以新页面 打开B站 播放当前教学视频 点击访问app下载页面 豌豆荚 下载地址 大家好&#xff0c;今天我们讲一下超级数据查看器的便捷功能。 便捷功能为了在详情界面快速操作 首先&#xff0c;我们打开超级数据查看器&…

Android Studio开发学习(七)———RelativeLayout(相对布局)

在上期中我们对LinearLayout进行了详细的解析&#xff0c;LinearLayout也是我们用的比较多的一个布局,更多的时候更钟情于它的 weight(权重) 属性&#xff0c;等比例划分&#xff0c;对屏幕适配还是 帮助蛮大的;但是使用LinearLayout的时候也有一个问题&#xff0c;就是当界面比…

FPGA在医疗的应用,以4K医疗内窥镜为例

前言 随着技术的发展&#xff0c;医学影像作为科学技术的主要成就之一&#xff0c;在无创诊断和治疗领域已经有了多种应用。其中一个应用是内窥镜&#xff0c;在20世纪90年代&#xff0c;当利用电荷耦合装置将图像传输到显示器上成为可能时&#xff0c;内窥镜变得更加广泛。为…