二、PHP基础——连接msql数据库进行增删改查操作 实战:新闻管理项目

Mysql扩展
PHP针对MySQL数据库操作提供的扩展:允许PHP当做MySQL的一个客户端连接服务器进行操作。
连库基本操作
连接数据库服务器
1)资源 mysql_connect(服务器地址,用户名,密码)

在这里插入图片描述
在这里插入图片描述

连接资源默认也是超全局的,任何地方都可以使用该资源进行数据库的其他操作

补充:mysql_connect默认是对一个服务器只连接一次(如果再次运行,返回的是同一个资源),但是如果有需要连接同一个资源两次,那么可以使用第四个参数:TRUE

设置连接编码
保持客户端与服务器之间的沟通顺畅:同一“语言”(字符集)
1)形式1:mysql_query(“set names XXX”)
在这里插入图片描述
在这里插入图片描述

2)形式2:mysql_set_charset(“XXX”)
在这里插入图片描述
在这里插入图片描述

3)怎么确定要使用何种编码
客户端当前执行脚本的界面是什么字符集,就设定成什么字符集
选定要使用的数据库
1)形式1:mysql_query(“use XXX”)
2)形式2:mysql_select_db(“XXX”)
在这里插入图片描述
在这里插入图片描述

关闭连接
主动释放连接:MySQL服务器的连接资源是有限的,不用了需要释放(脚本执行结束系统也会自动释放)
1)mysql_close()
在这里插入图片描述
在这里插入图片描述

执行增删改操作
Mysql_query函数执行结果返回的是true或者false,true代表执行成功,false代表执行失败:失败原因分两种:一种是SQL指令本身语法错误;第二种是执行失败;
在这里插入图片描述

做个专门负责数据库初始化的脚本:之后要操作数据库包含该脚本即可
在这里插入图片描述
在这里插入图片描述

1)mysql_query(“insert …”):通过insert指令向指定表插入对应的数据
在这里插入图片描述
在这里插入图片描述

2)mysql_query(“delete …”):根据删除指令操作数据库(表)
在这里插入图片描述
在这里插入图片描述

3)mysql_query(“update …”):根据更新指令操作数据库
在这里插入图片描述
在这里插入图片描述

判断执行结果
1)执行成功,结果为true,只代表SQL指令执行成功
2)执行失败,结果为false,代表SQL指令错误或者操作对象不存在
在这里插入图片描述

执行查询操作
执行查询语句
1)mysql_query(“select …”)
2)其他类似查询语句,比如:show语句,desc语句
以上两种情况的总结:凡是执行操作希望拿到数据库返回的数据进行展示的(结果返回:数据结果)
3)执行结果的处理:成功为结果集,失败为false
成功返回结果:SQL指令没有错误,但是如果查询结果本身为空返回也是true(结果集是一种资源:转换成bool永远为TRUE)
在这里插入图片描述
在这里插入图片描述

失败为false:SQL指令有错误
在这里插入图片描述

获取结果集行数
1)mysql_num_rows():获取结果集中到底有多少行记录
在这里插入图片描述
在这里插入图片描述

解析结果集
将一种结果集资源(PHP不能直接使用),转换成一种PHP能够解析的数据格式:通过从结果集中(结果集指针:类似数组指针),按照结果集指针所在位置取出对应的一条记录(一行),返回一个数组,同时指针下移…直到指针移出结果集。
1)mysql_fetch_assoc():获取关联数组,表的表单名字作为数组下标,元素值作为数组元素值
在这里插入图片描述
在这里插入图片描述

2)mysql_fetch_row():获取索引数组,只获取数据的值,然后数组的下标从0开始自动索引
在这里插入图片描述
在这里插入图片描述

3)mysql_fetch_array():获取关联或者索引数组,但是默认是同时存在:一个记录取两次,形成一组是关联数组,一组是索引数组;但是可以通过第二个参数来决定获取的方式:MYSQL_ASSOC只获取关联数组;MYSQL_NUM只获取索引数组;MYSQL_BOTH获取全部两种。
在这里插入图片描述
在这里插入图片描述

通常结果集的操作:一般是获取里面的所有(全部记录)

其他相关函数
有关字段信息
1)mysql_num_fields():获取一个指定结果集中所有的字段数
在这里插入图片描述
在这里插入图片描述

2)mysql_field_name():获取一个指定结果集中指定位置字段的名字
在这里插入图片描述
在这里插入图片描述

有关出错信息
1)mysql_error():获取出错对应的提示信息
2)mysql_errno():获取出错对应的错误提示代号

错误的判断:基于Mysql_query这个函数执行的结果:结果返回false就代表执行错误。
在这里插入图片描述
在这里插入图片描述

其他函数
1)mysql_insert_id():获取上次插入操作所产生的自增长ID,如果没有自增长ID返回0
在这里插入图片描述
在这里插入图片描述

Mysql扩展应用案例
添加新闻表单

1) 用户获取到一个可以添加新闻表单的HTML文件
在这里插入图片描述

修改表单项:method提交对象
在这里插入图片描述

2) 用户提交数据到后台指定的PHP脚本(POST)
在这里插入图片描述
在这里插入图片描述

3) 后台脚本处理数据,插入到数据库:处理指PHP在拿到数据放入数据库之前要做很多验证工作保证数据是有效的。
3.1 接收数据
在这里插入图片描述
在这里插入图片描述

3,2 数据验证:合法性验证。标题不能为空,内容不能为空
在这里插入图片描述

3.3 提示用户,同时让用户重新再来(回到新增表单页面)
在这里插入图片描述
在这里插入图片描述

3.4 数据入库
在这里插入图片描述
在这里插入图片描述

4) 提示用户操作结果,并跳转到列表页(跳转到详情页)
在这里插入图片描述
在这里插入图片描述

Mysql扩展应用案例
显示新闻列表

将数据库中所有的新闻信息获取出来,然后讨要HTML提供的显示模板把数据全部按照指定的位置和格式输出显示。

1、 从数据库获取所有的新闻数据:PHP脚本
在这里插入图片描述

从结果集中取出所有的记录:一次取一条,一条一个数组;然后将所有的记录放到一个数组中:形成一个典型的二维数组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、 有一个已经做好的HTML模板能够显示数据:前端
在这里插入图片描述

3、 PHP想办法将数据在HTML中显示(二者结合):PHP包含HTML
在这里插入图片描述

注意细节:
1、 数据的显示要通过循环遍历输出:需要明确PHP是如何保存数据
2、 数据的格式需要按照需求来显示:列表、时间、是否置顶
Mysql扩展应用案例
删除新闻

删除新闻就是通过用户选中某一个新闻点击删除实现从数据库剔除。

1、 让用户看到所有的新闻:已经完成(新闻显示列表:news.phpnews.html)
2、 给用户提供一个对应的点击按钮:已经存在
3、 实现点击针对指定的新闻
在这里插入图片描述

4、 有一个专门的PHP脚本负责响应用户的点击:点哪条删哪条
4.1 接收要删除的新闻ID
在这里插入图片描述

4.2 调用数据库操作删除数据
在这里插入图片描述

4.3 提示删除成功,并且刷新当前界面
在这里插入图片描述

Mysql扩展应用案例
修改新闻

修改新闻指用户通过某个取到看到想修改的新闻,然后点击之后能够修改对应的新闻信息,最后点击保存实现修改更新到数据库。

1、 需要看到想编辑新闻:已经完成:新闻列表news.phpnews.html
2、 可以点击实现查看:列表页中为每个新闻增加点击链接
在这里插入图片描述

3、 需要一个PHP脚本能够处理这件事
3.1 创建PHP文件,同时接受要编辑的ID
在这里插入图片描述

3.2 通过ID获取对应的新闻信息
在这里插入图片描述

4、 需要一个HTML模板来展示当前要编辑的数据:PHP包含HTML
4.1 包含模板HTML
在这里插入图片描述

4.2 在模板表单中显示对应的数据
在这里插入图片描述

5、 需要修改前端提供的更新表单:表单提交对象(不限)
5.1 需要修改表单提交对象
在这里插入图片描述

5.2 更新操作,是后台根据表单提交的数据来选择某个新闻进行更新:表单中必须包含一个唯一能确定记录的新闻:ID,而ID不需要给用户看,需要增加隐藏表单
在这里插入图片描述

6、 需要一个PHP脚本能够接受修改后的数据并保存到数据库
6.1 增加更新数据的PHP脚本
在这里插入图片描述

6.2 接收用户提交的数据,同时进行数据验证:标题和内容均不能为空
在这里插入图片描述

6.3 组织SQL更新到数据库
在这里插入图片描述

6.4 提示结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础-2

文章目录0 前言1 全连接神经网络2 激活函数2.1 Sigmoid2.2 Tanh2.3 ReLU2.4 Leaky ReLU3 交叉熵损失4 计算图与反向传播4.1 计算图4.2 梯度消失与梯度爆炸4.3 动量法5 权重初始化5.1 全零初始化5.2 标准随机初始化5.3 Xavier初始化5.4 Kaming初始化6 批归一化7 参考资料0 前言 …

三、PHP基础——HTTP协议 文件编程

一、HTTP协议初步认识 HTTP协议概念 HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 HTTP协议是用于从WWW服务器传…

四、PHP基础——会话技术Cookie 和 Session

会话技术初步认识 会话技术介绍 web会话可简单理解为:用户开一个浏览器,访问某一个web站点,在这个站点点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。 HTTP协议的特点是…

python三级菜单设计题目_Python三级菜单

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 三级菜单:打印省、市、县三级菜单。 可返回上一级,可随时退出程序首先准备基础数据zone{山东:{青…

c#复习-2

输入三个学生的信息学号、姓名、分数从大到小排序 1 using System;2 using System.Collections;3 using System.Collections.Generic;4 using System.Linq;5 using System.Text;6 7 namespace 复习CS8 {9 class Program 10 { 11 struct Student 12 { 1…

long类型python_Python类型long vs C'long long'

I would like to represent a value as a 64bit signed long, such that values larger than (2**63)-1 are represented as negative, however Python long has infinite precision. Is there a quick way for me to achieve this? 解决方案>>> from ctypes import …

Vue中富文本编辑器的使用

基于 Vue 的富文本编辑器有很多,例如官方就收录推荐了一些: https://github.com/vuejs/awesome-vue#rich-text-editing 。 这里我们以 element-tiptap 为例。 GitHub 仓库:https://github.com/Leecason/element-tiptap 在线示例&#xff1a…

Vue项目中使用Echarts(一)

Echarts官方文档 1. 安装Echarts 在cmd命令行输入: npm install echarts --save 2. 代码中使用 注意:import 引入echarts 包时,不要使用 import echarts from ‘echarts’ 而要使用import * as echarts from echarts 否则会报错如下: 3. 页…

Google Guava缓存实现接口的限流

一.项目背景 最近项目中需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如1000次,来保护接口。 参考了 开涛的博客聊聊高并发系统限流…

javaweb 常用jar包_使用javaweb写一个登录案例

下载地址:https://gitee.com/dl_shrimp/java_web_login_case.githttps://www.zhihu.com/video/1241780888599699456讲一下如何使用javaweb写一个登录案例Dao就是用来操作数据库的一些类的统称(1)DAO是Data Access Object数据访问接口。数据访…

Vue项目中使用图片裁切器 cropperjs (头像裁切)

cropperjs官方文档 cropperjs结合element-ui 组件后的显示效果: 1. npm 安装 cropperjs cmd命令行输入:npm install cropperjs --save 2. 导入相关js和css文件 import cropperjs/dist/cropper.css import Cropper from cropperjs3. 用块元素(容器&…

跳一跳python源码下载_python 微信跳一跳和源码解读

刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文。 本文适用对象为WIN10系统,安卓用户。目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作。我会把我自己的每一步都写下来…

HTML文件上传对象file

window.URL.createObjectURL(fileObj)

Vue项目中使用Echarts(二)

1. 安装&#xff1a; 通过 npm 获取 echarts&#xff0c;npm install echarts --save 2. 最终页面展示效果如下&#xff1a; 三、代码实现 map-demo.vue: <template><!-- 1. 为 ECharts 准备一个具备大小&#xff08;宽高&#xff09;的 DOM --><div ref&quo…

Vue项目中使用百度地图API

百度地图官方文档 1. 申请百度账号和ak 申请 2. 引用百度地图API文件 <script type"text/javascript" src"https://api.map.baidu.com/api?v1.0&&typewebgl&ak您的密钥">3. 设置容器样式 设置容器样式大小 4. 创建地图容器元素 …

8.0/9.0 Email 设置

Email 设置一直都是Odoo的一个坑&#xff0c;巨坑。 先讲结论&#xff0c;发邮件可以用&#xff0c;收还是算了吧 1. 发邮件设置 发的设置相对简单&#xff0c;如果企业邮箱支持catcll all功能&#xff0c;基本不用改动可以直接用&#xff0c;否则需要安装第三方模块&#xff0…

Vue v-model 指令详解以及sync修饰符的使用场景(结合父子组件通信案例)

参考Vue官方文档 一、需求如下&#xff1a; 二、代码如下 三、分步解析&#xff1a; 父组件给子组件传值&#xff1a; 子组件给父组件传值&#xff1a; 四、sync修饰符的使用 vue.js官方文档 如果已经使用了v-model双向绑定了一个数据&#xff0c;但是还想要实现另一个数…

stm32F1使用SD卡实现IAP

最近在做一个项目&#xff0c;想使用uSD卡来实现在应用编程&#xff0c;首先需要一些知识 我所使用的单片机是STM32F103ZE&#xff0c;内部flash&#xff0c;超始地址为0x8000000&#xff0c;大小为0x80000&#xff08;0x80000/1024也就是512kByte&#xff09;要实现IAP&#x…

父组件访问子组件中的数据(父子组件通信案例:父组件访问子组件$refs[‘子组件‘],子组件传递数据给父组件(父组件中使用v-model))

一、需求 二、在父组件upload-cover中&#xff1a; 通过$refs[子组件的ref属性值]就能拿到子组件对象 三、在子组件imgae-list&#xff08;相对于父组件upload-cover来说&#xff0c;image-list组件是子组件&#xff09;中 通过在data中定义一个selected&#xff0c;来保存…

[设计模式]6. C++与职责链模式(chain of rsponsibility pattern)

默默地EEer&#xff0c;原文地址&#xff1a; http://www.cnblogs.com/hebaichuanyeah/p/5625233.html 职责链模式指使多个对象多有机会处理请求&#xff0c;避免请求发送者和接受者的耦合关系。 将这些接受处理的对象连成一条链&#xff0c;并沿着该链处理请求。 一个传说中的…