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

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 银翼

【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表的增删改查,针对其它表做练习也可以。