思考:如果数据库的操作都是需要我们手动去调用客户端发送指令,那么这样的操作有什么意义呢?

引入:手动通过客户端操作MySQL数据库,只是我们学习SQL的一种手段。要实现数据库的自动调用,就需要客户端能够将事先组织好的SQL指令自动的根据需求发送给服务器去执行。这个使用就需要利用到PHP来充当客户端,再配合Apache调用PHP模块来共同协作完成。

PHP充当MySQL的客户端

PHP能够组织SQL指令并发送给服务端去执行

PHP能够从执行结果中获取和解析数据来供程序使用

总结:手动通过MySQL客户端去操作数据库那是DBA的事情,从项目的角度来讲,一定是想办法让客户端能够自动去发送SQL并解析SQL指令,从而配合数据库完成项目需求。

思考:PHP如何能够操作MySQL服务器呢?PHP不是MySQL对应的客户端啊!

引入:PHP的确不是MySQL官方的客户端,但是MySQL本质是一种应用程序,客户端与服务端的通信是通过一些网络原理来实现的,而PHP也是一种应用程序,自然也可以找到对应的通信协议来实现充当客户端的角色。

1. PHP加载Mysqli充当MySQL客户端【掌握】

定义:PHP价值Mysqli充当MySQL客户端,是指PHP内部通过一些底层的协议,达成了与MySQL服务端实现数据互通的效果。从而PHP在开发过程中,只需要去调用相关的扩展就能充当客户端角色。

PHP中提供很多数据库产品客户端的扩展,在PHP的ext文件夹中

PHP支持的数据库产品扩展.png

PHP不确定用户在使用PHP的时候会选择哪种产品,因此并没有启用相应扩展,如需启用需要在php.ini文件中开启相应扩展

php.ini加载mysqli扩展.png

注意:PHP的配置文件修改需要重启Apache才会生效

如果php.ini文件加载扩展是第一次,那么需要启用扩展文件所在路径:==extension_dir== = ==扩展所在路径==

查看PHP中是否加载了mysqli扩展:在PHP代码中使用phpinfo()函数

PHP验证mysqli扩展加载成功.png

为什么选择mysqli扩展?

mysqli扩展封装的功能强大

mysqli支持面向对象也支持面向过程(当前所有代码都是面向过程)

总结:PHP自身不能直接操作MySQL,需要借助扩展才能充当MySQL的客户端

思考:PHP充当了MySQL的客户端后到底该如何才能真实操作MySQL呢?

引入:PHP加载的mysqli扩展,实际是上提供了一套操作数据库的函数,我们只需要去调用对应的函数即可。

2. PHP操作MySQL【掌握】

定义:PHP操作MySQL,实际就是通过调用mysqli扩展的一系列函数来执行一些根据实际业务组织的SQL指令。

mysqli为PHP开发者提供了一套可操作函数,我们可以通过操作手册来进行查看:在索引中输入mysqli_即可

mysqli操作手册使用.png

常用的mysqli方法有以下几个

mysqli_connect:连接认证

mysqli_connect_error:连接失败的错误信息

mysqli_close:关闭连接

mysqli_errno:出现错误的编号

mysqli_error:出现错误的信息

mysqli_query:执行查询SQL指令

mysqli_affected_rows:当前mysql操作受影响的行数(写操作)

mysqli_num_rows :当前查询结果集中的行数

mysqli_free_result:释放查询的结果集

mysqli_fetch_row:从查询结果集中取出一条记录,返回一维数组(索引数组)

mysqli_fetch_assoc:从查询结果集中取出一条记录,返回以为数组(关联数组:字段名作为下标)

mysqli_fetch_all:从查询结果集中取出所有记录,返回二维数组

PHP操作MySQL

连接认证、设定字符集和选择数据库

//使用mysqli操作数据库

$conn = @mysqli_connect('localhost','root','root');

//设置字符集

$sql = 'set names utf8';

$res = mysqli_query($conn,$sql);

//选择数据库

$sql = "use my_database";

$res = mysqli_query($conn,$sql);

新增数据

//接连接认证

$sql = "insert into my_student1 values (null,'犬夜叉','男',200,5)";

$res = mysqli_query($conn,$sql);

//查看受影响的行数

echo mysqli_affected_rows($conn);

修改数据:与新增数据一样

//接连接认证

$sql = "update my_student1 set age = 22 where id = 1"; #注意筛选条件

$res = mysqli_query($conn,$sql);

//查看受影响的行数

echo mysqli_affected_rows($conn);

删除数据:与新增和修改一样

//接连接认证

$sql = "delete from my_student1 where id = 1";

$res = mysqli_query($conn,$sql);

//查看受影响的行数

echo mysqli_affected_rows($conn);

查询数据

//接连接认证

$sql = "select * from my_student1";

$res = mysqli_query($conn,$sql); #此时$res是结果集

//读取一条数据

$row = mysqli_fetch_assoc($res); #获取一条记录,且指针下移(下次获取下一条)

//取出全部

$lists = array();

while($row = mysqli_fetch_assoc($res)){

$lists[] = $row; #二维数组保存

}

总结

PHP操作mysql是利用mysqli扩展提供的函数

PHP充当mysql客户端操作的流程和mysql.exe一致

程序操作数据库本质就是实现数据的增查改删(CRUD)

php操作mysql数据库的扩展有哪些_8.PHP操作MySQL数据库(Mysqli扩展)相关推荐

  1. mysql报11004_使用mysqli扩展技术查看服务器连接错误报告的方法

    使用mysqli扩展技术查看服务器连接错误报告的方法 作为PHP的黄金搭档MySQL数据库,在PHP项目开发过程中有着举足轻重的作用,这不仅因为MySQL是完全免费的,而且和PHP一样都是完全跨平台的 ...

  2. php mysql 持久化_PHP: mysqli 扩展和持久化连接 - Manual

    mysqli 扩展和持久化连接 从 PHP 5.3 mysqli 扩展开始支持持久化连接. 持久化连接已经在 PDO MYSQL 和 ext/mysql 中提供支持. 持久化连接的目的在于重用客户端到 ...

  3. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  4. 一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE

    这是一个.net下操作数据库(结构数据库)的工具类,支持sqlserver.oracle.mysql.postgres.sqlite.access等常见数据库. 注意:它并不是一个orm工具(常见的o ...

  5. mysql数据迁移到sqlserver_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...

    这是一个.net下操作数据库(结构数据库)的工具类,支持sqlserver.oracle.mysql.postgres.sqlite.access等常见数据库. 注意:它并不是一个orm工具(常见的o ...

  6. lnp和mysql分开安装_毕业设计之LNP+DISCUZ +分离的数据库操作

    环境介绍: CentOS6.9最小化安装 https://nginx.org/download/nginx-1.16.1.tar.gz https://www.php.net/distribution ...

  7. mysql数据库横向转纵向_MariaDB Spider:实现MySQL横纵向扩展的小能手

    什么是Spider? 当您的数据库不断增长时,您绝对需要考虑其他技术,如数据库分片.Spider是MariaDB内置的一个可插拔用于MariaDB/MySQL数据库分片的存储引擎,充当应用服务器和远程 ...

  8. oledb vc访问mdb数据库_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...

    这是一个.net下操作数据库(结构数据库)的工具类,支持sqlserver.oracle.mysql.postgres.sqlite.access等常见数据库. 注意:它并不是一个orm工具(常见的o ...

  9. php面向对象封装mysql_PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)...

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

最新文章

  1. 屏幕后处理——Bloom
  2. 2021年春季学期-信号与系统-第五次作业参考答案-第十小题
  3. Junit Hamcrest Eclemma
  4. Linux基础命令(常用的)
  5. jeecg团队招新人(5人)
  6. RestFramework之认证组件
  7. 山西计算机网络技术专升本分数线_2020山西成考专升本招生补录第一批公告!附补录院校专业缺额表!...
  8. 西点军校邀马云谈领导力:要为年轻人和未来做决策_演讲
  9. continue跳转
  10. 抛弃jQuery 深入原生的JavaScript
  11. pr剪辑教程,如何跨剪辑应用和调整效果?
  12. python读取、写入txt文本内容
  13. 【李宏毅机器学习HW2】
  14. 使用plsql导出数据库表中数据
  15. c莫比乌斯函数_莫比乌斯函数
  16. 域名信息备案管理系统php,如何查询域名备案号
  17. 使用虚拟机备份软件备份VMware vSphere虚拟机
  18. 叮当健康明日港股上市:拟募资3.4亿港元 单季期内亏损4亿
  19. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
  20. 给应用重新签名,重新签名包

热门文章

  1. linux gcc编译参数顺序问题
  2. 使用WinDbg获取SSDT 系统服务描述表的函数服务号(索引)
  3. VS为VC++添加UAC控制(VC程序默认管理员运行)
  4. printf 中转义字符大全
  5. Linux进程状态解析之R、S、D、T、Z、X
  6. 辛湜推荐的数据库领域的一些学习材料
  7. 良性代码,恶意利用:浅谈 Return-Oriented 攻击
  8. 数据结构 - 反转单链表(C++)
  9. linux查看docker使用率,查看docker容器的内存占用
  10. java string s_Java字符串:“String s=新字符串(”愚蠢“);