php速成_day3
一、MySQL关系型数据库
1、什么是数据库
数据库 数据存储的仓库,在网站开发应用当中,需要有一些数据存储起来。
注册的用户信息,使用PHP变量只是一个临时的存储,如果需要永久的存储起来,就把数据存储到数据库中。、
2、常见的数据库
SQL server 微软公司的 sqlserver2005
oracle 甲骨文公司的 大型商业数据库
mysql 一个开源的数据库
3、关系型数据库
关系型数据库,把数据通过二维的关系进行关联起来。
4、MySQL管理软件MySQL-Front
可以使用MySQL相关的数据库管理工具进行操作
- 打开phpstudy管理软件
- 点击MySQL管理器,点击MySQL-Front
- 删除当前的显示出来的,新建一个数据库
- 确定MySQL已经启动
- 双击自己刚刚新建的数据库,建立连接
5、创建数据库
数据库使用中,需要先创建一个数据库,再到数据库中创建表进行使用。数据是存储到数据表中的。
一台数据库服务器上,可能运行了多个项目。多个项目就会拥有多个数据库。
商城项目 shop数据库
学生管理系统 student数据库
通过数据库管理软件(图形界面)进行操作
通过SQL语句进行数据库的管理操作:
创建数据库
create database 数据库名称;
查看数据库
show databasses;
修改,重命名
在Mysql5之后是不允许对数据库进行修改的,只能是删除再进行创建
删除
drop database 数据库名称;
6、数据字段的类型详解
整型
- 不同int类型,取值范围是不同的,所占用的空间大小也不同
- 无符号 正数范围 实际开发中存储正数 unsigned
- tinyint 人的年龄
- smallint 万级别 人员编号 学生编号
- medium 千万级别 文章id 商品id
- int 亿级别
- bigint比int范围更大的
- 合理使用整型存储数据范围,可以节省数据存储空间。提高数据的使用和查询速度。
字符串类型
char 定长的 最大255字符
电话号码char(11) QQ号码 密码md5返回32 char(32)
varchar 变长的 最大65535字节 utf8 一个字符占用3个字节 2万左右 gbk 一个字符占用2个字节 3万左右 会占用一个字节进行存储数据的长度
会员的名称 备注描述
text: 文本类型 存储数据更大的字符串类型
enum: 枚举类型(单选)
基本语法:enum(‘男’,’女’,’保密’);
set: 集合类型(多选)
基本语法:set(‘吃饭’,’睡觉’,’打豆豆’)
一些关键字
unsigned 无符号 指使用整型的正数范围
not null 非空
primary key 主键 设置为数据表中的id 唯一的
auto_increment 自动增长 当整型数据没有被插入时,会根据上条进行+1操作
7、创建数据表
数据表以二维表的方式进行存储数据。行和列。
创建数据表
create table 数据表名称 (
字段1 字段类型,
字段2 字段类型
)[表选项];
案例:创建一个存储用户信息的数据表
username age address
注意在创建数据表时,要选择操作的数据库。
use 数据库名称;
查看
查看当前操作数据库里的所有数据表
show tables;
修改名称
数据库名称不可以进行修改,但是数据表名称可以通过rename语法进行修改
rename table 旧名称 to 新名称
删除
drop table 表名字;
8、数据的增删改查(重点中的重点)
增加
insert into 表名字 values (字段的值)
查询
select 查询的字段名字 from 表名字
where 查询条件
查询处id为2的数据
select * from user where id =2;
order by 通过某个条件字段进行排序显示 asc 升序(123)desc倒序(321)
select * from user order by age desc;
limit 限制输出的条数 第一个参数skip跳过几天,第二个参数取几条
select * from user order by age desc limit 1;
修改
update 表名称 set 字段名称 = 修改为新的值 where 查询条件
删除
delete from 表名称 where 查询条件
删除整个表可以delete语句不加where条件。
问:delete和truncate删除表数据的区别?
delete删除整个表,它的id会延续之前的自增属性的id值
truncate清空整个表,id也重置
truncate 表名称;
-- 创建数据库
create database php;
-- 查看数据库
show databases;
-- 删除shop数据库
drop database shop;
-- 使用数据库
use php;
-- 创建user数据表
-- not null 字段值不能够为null
-- auto_increment 自增
-- primary key 主键 唯一性
create table user(
id smallint not null auto_increment,
username varchar(20) not null,
age tinyint,
address varchar(255),
primary key(id)
)engine=myisam default charset=utf8;
-- 创建商品表
-- decimal 用来存储小数类型
create table goods(
id mediumint not null auto_increment,
goodsname varchar(40) not null,
price decimal(10,2) not null,
author varchar(20) not null,
primary key(id)
)engine=myisam default charset=utf8;
-- 修改表名称
rename table goods to php_goods;
-- 删除表
drop table user;
-- 给user表写入数据
insert into user values (null,'小明',15,'北京市昌平区');
insert into user values (null,'小红',10,'天津市西青区');
-- 插入固定字段的写法
insert into user(username,age,address) values('小强',9,'大连市西岗区');
-- 查询出user表的信息
-- *代表全部字段查询出来
select * from user;
-- 查询出user表中id为2的数据
select * from user where id = 2;
-- order by 语法
select * from user order by age desc;
-- limit 语法
select * from user order by age desc limit 0,1;
-- 修改id为1的username为王小明
update user set username = '王小明' where id = 1;
-- 删除id为2的数据
delete from user where id = 2;
-- 清空表
truncate user;
-- 设计存储图书信息的数据表
create table goods(
id smallint unsigned not null auto_increment,
goodsname varchar(20) not null,
price decimal(10,2) not null,
img varchar(50) not null,
author varchar(200) not null,
primary key(id)
)engine=myisam default charset=utf8;
二、PHP和MySQL拓展
1、PHP和MySQL的关系
PHP的变量只能够临时接收用户信息,如果需要永久存储,就存储到MySQL中。
就需要通过PHP来操作MySQL进行的管理操作。
2、开启MySQL拓展(使用PHP操作MySQL)
PHP想要操作MySQL数据库,需要有对应的函数库支持。开启php_mysql.dll
开启拓展,php.ini配置文件
# 打开phpstudy
# 点击其他选项菜单,选择打开配置文件,选择php-ini
# 在打开的文件中
修改了配置文件之后注意重启apache
通过开启后的php对应的mysql操作,就可以操作mysql数据库了。
操作数据库使用的语法或者步骤:
连接数据库
mysql_connect(‘主机名或者ip地址’,’用户名称’,’用户密码’);
设置选择数据库
mysql_query(use 数据库名称);
设置字符串编码
mysql_query(set names utf8);
PHP操作mysql的重点就是通过之前学习的SQL语句,使用PHP的函数mysql_query执行,对应处理返回结果。
mysql_affected_rows() 执行sql之后返回的影响行数
3、增加操作
day3/insert.php
<?php
// header响应头信息
header('Content-Type:text/html;charset=UTF-8');
// 引入数据库连接
require './mysql.php';
//4.sql语句
$sql = "insert into user values (null,'xiaohei',23,'北京市房山区')";
// 5.执行sql语句
$result = mysql_query($sql);
// 执行后的返回值 成功为true 失败为false
// 执行后影响的行数
if($result && mysql_affected_rows() > 0){
echo '写入成功';
}else{
echo '写入失败';
}
4、更新操作
day3/update.php
<?php
// header响应头信息
header('Content-Type:text/html;charset=UTF-8');
// 引入数据库连接
require './mysql.php';
//4.sql语句
$sql = "update user set username = '小黑' where id = 3";
// 5.执行sql语句
$result = mysql_query($sql);
// 执行后的返回值 成功为true 失败为false
// 执行后影响的行数
if($result && mysql_affected_rows() > 0){
echo '修改成功';
}else{
echo '修改失败';
}
5、删除操作
day3/delete.php
<?php
// header响应头信息
header('Content-Type:text/html;charset=UTF-8');
// 引入数据库连接
require './mysql.php';
//4.sql语句
$sql = "delete from user where username = '小黑'";
// 5.执行sql语句
$result = mysql_query($sql);
// 执行后的返回值 成功为true 失败为false
// 执行后影响的行数
if($result && mysql_affected_rows() > 0){
echo '删除成功';
}else{
echo '删除失败';
}
6、查询操作
查询的SQL语句通过mysql_query执行后,返回的是一个资源集。需要使用mysql_fetch_assoc(资源集)取出数据,每次取出一条数据。
day3/select.php
<?php
// header响应头信息
header('Content-Type:text/html;charset=UTF-8');
// 引入数据库连接
require './mysql.php';
// 4.sql
$sql = 'select * from user';
// 5.执行sql
$result = mysql_query($sql);
// 返回资源集
// var_dump($result);
// 从资源集结果中取出一条数据
// 每次只能去一条
// $rows = mysql_fetch_assoc($result);
// var_dump($rows);
// 再取一条信息
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// while循环
// 条件等于false就不执行了
while ($row = mysql_fetch_assoc($result)) {
echo '姓名:'.$row['username'].'<br>';
echo '年龄:'.$row['age'].'<br>';
echo '地址:'.$row['address'].'<br>';
echo '<hr>';
}
7、遍历输出查询结果
因为结果集每次只能取出一条数据,遍历结果集,并输出里面的内容。
while循环适合进行不知道循环次数,然后进行一个循环取出数据的操作。
day3/select.php
<?php
// header响应头信息
header('Content-Type:text/html;charset=UTF-8');
// 引入数据库连接
require './mysql.php';
// 4.sql
$sql = 'select * from user';
// 5.执行sql
$result = mysql_query($sql);
// 返回资源集
// var_dump($result);
// 从资源集结果中取出一条数据
// 每次只能去一条
// $rows = mysql_fetch_assoc($result);
// var_dump($rows);
// 再取一条信息
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// echo '<hr>';
// var_dump(mysql_fetch_assoc($result));
// while循环
// 条件等于false就不执行了
while ($row = mysql_fetch_assoc($result)) {
echo '姓名:'.$row['username'].'<br>';
echo '年龄:'.$row['age'].'<br>';
echo '地址:'.$row['address'].'<br>';
echo '<hr>';
}
三、综合案例:仿JD的产品管理功能
1、图书添加功能页面
day3/jd/add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加图书</title>
</head>
<body>
<form action="do.php?act=add" enctype="multipart/form-data" method="post">
商品名称<input type="text" name="goodsname" />
<hr>
价格<input type="text" name="price" />
<hr>
出版社<input type="text" name="author" />
图片<input type="file" name="img" />
<hr>
<input type="submit" name="submit" value="添加" />
</form>
</body>
</html>
2、图书添加功能页面
day3/jd/add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加图书</title>
</head>
<body>
<form action="do.php?act=add" enctype="multipart/form-data" method="post">
商品名称<input type="text" name="goodsname" />
<hr>
价格<input type="text" name="price" />
<hr>
出版社<input type="text" name="author" />
图片<input type="file" name="img" />
<hr>
<input type="submit" name="submit" value="添加" />
</form>
</body>
</html>
3、数据添加处理页面
数据管理的页面除了做添加操作之前,可能之后还要做删除和修改操作。所以需要对要执行的操作进行判断。
在PHP中还有一个 $_REQUEST 的请求接收变量,既可以接收$ _POST 的信息也可以接收$_GET 的信息。
day3/jd/do.php
<?php
// header响应头
header('Content-Type:text/html;charset=UTF-8');
// 引入函数库
require './function.php';
// 引入数据库连接
require './mysql.php';
// 判断是需要进行什么操作
if($_REQUEST['act'] == 'add')
{
// 接收添加的商品图书信息
// 判断是否表单提交
if(isset($_POST['submit'])){
// 接收信息
$goodsname = $_POST['goodsname'];
$price = $_POST['price'];
$author = $_POST['author'];
// 根据之前学习的上传文件操作,进行处理
$filename = filename($_FILES['img']['name']);
move_uploaded_file($_FILES['img']['tmp_name'],'./upload/'.$filename);
// 添加接收的数据到数据库中
$sql = "insert into goods values(null,'$goodsname',$price,'$filename','$author')";
// echo $sql;
// 执行sql语句
$result = mysql_query($sql);
// 判断是否添加成功
if($result && mysql_affected_rows() > 0){
echo '添加成功';
}else{
echo '添加失败';
}
}
}elseif($_REQUEST['act'] == 'update'){
// 修改方法
}
4、设计数据库表存储数据
需要把PHP处理页面接收到的信息,存储到数据库。
通过数据表的字段进行存储。
设计一个存储图书信息的数据表
5、使用PHP操作MySQL存储数据
day3/jd/do.php
<?php
// header响应头
header('Content-Type:text/html;charset=UTF-8');
// 引入函数库
require './function.php';
// 引入数据库连接
require './mysql.php';
// 判断是需要进行什么操作
if($_REQUEST['act'] == 'add')
{
// 接收添加的商品图书信息
// 判断是否表单提交
if(isset($_POST['submit'])){
// 接收信息
$goodsname = $_POST['goodsname'];
$price = $_POST['price'];
$author = $_POST['author'];
// 根据之前学习的上传文件操作,进行处理
$filename = filename($_FILES['img']['name']);
move_uploaded_file($_FILES['img']['tmp_name'],'./upload/'.$filename);
// 添加接收的数据到数据库中
$sql = "insert into goods values(null,'$goodsname',$price,'$filename','$author')";
// echo $sql;
// 执行sql语句
$result = mysql_query($sql);
// 判断是否添加成功
if($result && mysql_affected_rows() > 0){
echo '添加成功';
}else{
echo '添加失败';
}
}
}elseif($_REQUEST['act'] == 'update'){
// 修改方法
}
6、图书列表页面展示(select查询出数据 )
静态模版页面的制作
day3/jd/index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿JD图书列表页面</title>
</head>
<style type="text/css">
.price{
color: #e4393c;
font-size: 20px;
margin: 10px;
}
.title,.author{
color: #666;
font-size: 12px;
margin: 10px;
}
.box{
float: left;
border: 1px solid #c5c5c5;
}
</style>
<body>
<div id="content">
<?php
// 连接数据库
require './mysql.php';
// 查询sql语句
$sql = 'select * from goods';
$result = mysql_query($sql);
// 遍历资源集
while ($row = mysql_fetch_assoc($result)) {
?>
<div class="box">
<div><img src="upload/<?php echo $row['img']?>"></div>
<div class="price">¥<?php echo $row['price']?></div>
<div class="title"><?php echo $row['goodsname']?></div>
<div class="author"><?php echo $row['author']?></div>
</div>
<?php }?>
</div>
</body>
</html>
循环遍历输出数据库中存储的数据信息
day3/jd/index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿JD图书列表页面</title>
</head>
<style type="text/css">
.price{
color: #e4393c;
font-size: 20px;
margin: 10px;
}
.title,.author{
color: #666;
font-size: 12px;
margin: 10px;
}
.box{
float: left;
border: 1px solid #c5c5c5;
}
</style>
<body>
<div id="content">
<?php
// 连接数据库
require './mysql.php';
// 查询sql语句
$sql = 'select * from goods';
$result = mysql_query($sql);
// 遍历资源集
while ($row = mysql_fetch_assoc($result)) {
?>
<div class="box">
<div><img src="upload/<?php echo $row['img']?>"></div>
<div class="price">¥<?php echo $row['price']?></div>
<div class="title"><?php echo $row['goodsname']?></div>
<div class="author"><?php echo $row['author']?></div>
</div>
<?php }?>
</div>
</body>
</html>
最终实现效果
php速成_day3的更多相关文章
- 《LoadRunner12七天速成宝典》来了
看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...
- Java正则速成秘籍(一)之招式篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(二)之心法篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(三)之见招拆招篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- 【小白的CFD之旅】08 CFD速成之道
学了那么一个星期的流体力学,又看了一周的计算流体力学,小白对于如何应用CFD解决工程流体问题,依然是一无所知.眼看一个月的时间已经过半,小白有点着急起来.于是在一个阳光明媚的早晨,小白又找到了黄师姐. ...
- 一个简单的html5页面在线速成工具!(当然本文主要说下他的成果的结构)
分享一个好玩的web app页面速成工具 当然主要是让大家看下他的原理 看着他的结构大家就该猜到这个了.这个是利用换页之后给当前div加了一个active,然后利用css控制效果 这个毫无疑问是采用最 ...
- 高手速成android开源项目【导航篇】
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...
- 【翻译】CEDEC2015 速成Albedo Chart 制作
关于pbr材质和贴图的制作,最近llegorithmic提供了几篇不错的guide https://www.allegorithmic.com/pbr-guide 不过像如何从通过现实场 ...
- 30天,O2O速成攻略【8.30南京站】
活动概况 时间:2015年8月30日13:30-16:30 地点:啡咖啡·孵化器(南京市玄武大道699-22号江苏软件园22栋) 主办:APICloud.Udesk.人为峰 网址:www.apiclo ...
随机推荐
- mvn 编译报错mavn sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targ
mavn 编译报错: mavn sun.security.validator.ValidatorException: PKIX path building failed: sun.security.p ...
- nodejs 文件路径问题
fs.stat() 是 获取 本目录下 文件信息 的方法 .如果使用要加上绝对路径.不然会出问题.例: 解决方法
- Python 中使用动态创建类属性的机制实现接口之后的依赖
我们在自动化测试中经常会需要关联用例处理,需要动态类属性: 推荐使用第二种方法: 创建:setattr() 获取:getattr() 两种,如何创建 类属性 loan_id # 第一种,创建 # 类名 ...
- 六十一、SAP中的逻辑运算与进制转换
一.代码如下 二.16进制计算过程如下 三.计算结果为16进制的11,也就是10进制的17
- 003、mysql输出多个结果
SELECT VERSION(); SELECT NOW(); 结果1: 结果2: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦 ...
- VUE3.x 前瞻
文档: API Reference 教程 课件 1. 初始化项目 // ① npm i -g @vue/cli // ② vue create my-project // ③ npm install ...
- python_@classmethod
class A(object): bar = 1 def func1(self): print ('foo') @classmethod def func2(cls): print ('func2') ...
- Tornado中的Cookie设置
Tornado中的cookie分为两种--普通cookie和安全cookie 普通cookie 1.创建cookie 原型 self.set_cookie(name, value, domain=No ...
- Power Tower
题目大意:给出一段长为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\) ,一个模数 \(m\) .每次询问给定 \(l,r\) 求 \(a_l^{{a_{l+1}^\cdots}^{ ...
- mybaits的注解方式与配置文件方式比较
注解方式比配置文件方式简单了更多. 俩种配置 一个是制定配置文件路径,一个直接class指向dao层接口 只需加一个注解@**** 就能够实现 比写一个xml的配置文件简单更多.