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>

最终实现效果

猜你喜欢

转载自www.cnblogs.com/jiaxiaozia/p/12323500.html
今日推荐