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 ...
随机推荐
- Python 操作 sqlite
代码示例 #导入sqlite3库 import sqlite3 #连接数据库 conn = sqlite3.connect("customers.db") #创建表,主键id自增 ...
- Nachos-Lab1-完善线程机制
Nachos是什么 Nachos (Not Another Completely Heuristic Operating System),是一个教学用操作系统,提供了操作系统框架: 线程 中断 虚拟内 ...
- 中文文本分类之CharCNN
文本分类是自然语言处理中一个非常经典的任务,可用的模型非常多,相关的开源代码也非常多了.这篇博客用一个CNN模型,对新闻文本进行分类. 全部代码有4个模块:1.数据处理模块(命名为:cnews_loa ...
- 二十二、SAP中创建一个内表,并添加内容循环输出显示
一.直接上代码 二.输出如下
- 解决对路径bin\roslyn..的访问被拒绝
使用visual studio开发,一重新编译就会报错: 对路径“bin\roslyn\System.Reflection.Metadata.dll”的访问被拒绝 一开始的解决办法就是把bin下的文件 ...
- 控制数据的小数位数 java / js
//java一般控制格式都是通过 DecimalFormat 来控制的.下边是个例子. import java.text.DecimalFormat; public class ControlBit ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至少有一个函数被声明为纯虚 ...
- mui 横屏 竖屏
在项目中只有某个页面需要横屏 ,其他的都是竖屏展示的. 假设a页面横屏 ,返回之后竖屏 b页面 a+ 将其设置为横屏显示: b+ 将其设置为竖屏显示 但是进入a页面之后再返回b页面时 b页面也会称为横 ...
- Java IO 乱码
InputStreamReader isr = new InputStreamReader(new FileInputStream("./test/垃圾短信训练集80W条.txt" ...
- 从架构师视角看是否该用Kotlin做服务端开发?
前言 自从Oracle收购Sun之后,对Java收费或加强控制的尝试从未间断,谷歌与Oracle围绕Java API的官司也跌宕起伏.虽然Oracle只是针对Oracle JDK8的升级收费,并释放了 ...