惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
Jina AI
Jina AI
G
Google Developers Blog
Last Week in AI
Last Week in AI
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
The GitHub Blog
The GitHub Blog
D
Docker
量子位
罗磊的独立博客
腾讯CDC

博客园 - 银翼

【MySQL】Windows下如何彻底卸载MySQL? 【MySQL】Windows下如何重置root账号密码? 【Java】Task07实验4第5题解析 【辅导】Task12 类的定义与继承练习 【辅导】Task11 如何获取文件上传错误信息 PHP开发环境配置 XAMPP更换Apahce服务端口号 《Web应用开发技术(PHP)》往届学生优秀作业 【辅导】Task19 实现用户登录 主要知识点 【辅导】Task17 查询数据 主要知识点 【辅导】Task16 使用MySQL数据库 主要知识点 【辅导】Task15 熟悉错误与异常处理 主要知识点 【辅导】Task14 使用正则表达式 主要知识点 【辅导】Task13 使用会话管理 主要知识点(2) 【辅导】Task13 使用会话管理 主要知识点(1) 【辅导】Task12 使用类和对象 主要知识点(2) 【辅导】Task12 使用类和对象 主要知识点(1) 【辅导】Task11 熟悉PHP文件操作 主要知识点 【辅导】Task10 掌握PHP表单处理 主要知识点
【辅导】Task18 更新与插入删除操作 主要知识点
银翼 · 2020-05-20 · via 博客园 - 银翼

本任务介绍了4个方面的知识。Task18.1是对参数化查询的回顾也复习,不再讲解,Task18.2-18.4是介绍PHP中实现数据库的修改、插入和删除操作。

1PHP中数据库CRUD操作的实现

增加(Create)、读取(Retrieve)、更新(Update)和删除(Delete)

SQL语句无参数时,通过执行数据库连接对象query()方法来实现,比如SELECT查询。预处理语句也可以执行无参数SQL语句,不绑定参数变量就可以了。

SQL语句有参数时,可以通过执行预处理语句execute()方法来实现。参数化查询的SELECT语句,UPDATE、INSERT、DELETE语句一般来说都是有参数的。

2、下拉列表控件的数据绑定

本任务中,使用地址列表来演示了下拉列表控件的数据绑定方式:

 

以修改为例,客户信息已经读取到$stmt对象(只有一条数据记录),$address_id表示当前客户记录的地址编号。地址信息已经读取到$addr_list对象中,是结果记录集。

对下拉列表控件,需要绑定以下几项数据:

(1)每个option列表项: 可以从$addr_list对象循环读取来绑定:

<?php while ($row=$addr_list->fetch_assoc()):?>

<option>

<?="{$row['address']},{$row['city']},{$row['country']}";?>

</option>

<?php endwhile;?>

(2)需要设定每个选项的value属性值,当用户选择该项时,该值就是表单$_POST['address']的值,对应更新到Customer表的address_id字段。

<option value="<?="{$row['address_id']}";?>"

  ……

</option>

(3)当前列表的默认选中项,其value值应是当前正在修改的客户的address_id字段的值:

 

3、参数化查询的实现过程

建立数据库连接对象;

使用SQL语句建立预处理语句;

绑定参数变量 i-integer, d-double, s-string, b-blob

绑定结果变量

给参数变量赋值(如已经赋值可忽略)

执行查询

保存结果

关闭数据库连接

4、修改、插入、删除的实现过程

建立数据库连接对象;

使用SQL语句建立预处理语句;

绑定参数变量 i-integer, d-double, s-string, b-blob

给参数变量赋值(如已经赋值可忽略)

执行查询。

关闭数据库连接

5、关于execute()方法

注意,excute()方法返回true表示SQL语句执行成功,但并表示一定会对表会有实际的影响,如删除时指定了条件,但这个条件不成立,成功执行了删除语句,但实际上一条记录也没有删除。

可以通过数据库连接对象或预处理语句对象的affected_rows属性来获取最近一条SQL语句对结果记录集影响的行数。

excute()方法返回值,经常用来判断SQL语句执行时有没有错,如果有错误,可以通过该对象的error属性来获取SQL语句执行时的错误信息字符串,无错误时error属性值为空串。

6、会使用header()函数吗?

在本任务中,多次使用header()函数实现网页转向,如:

header('Location: Customer.php');

实际上,header()函数用来发送原生的http头部信息。上面的语句就是发送302转向的状态码。

下面的语句,显示404错误:

header("HTTP/1.0 404 Not Found");

下面的程序,强制浏览器显示一个文件下载的对话框:

<?php

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile('original.pdf');
?>

下面的程序,将保存在数据库中的blob类型字段内容(照片)输出到浏览器:

header('content-type:image/jpeg');

echo $row["photo"];

7、课后练习

有条件的同学,请务必参照课件和视频,练习下对Customer表的增删改查,针对其它表做练习也可以。