美文网首页
PHP数据库之CURD操作

PHP数据库之CURD操作

作者: Farewell_V587 | 来源:发表于2017-11-23 22:30 被阅读0次

前言

PHP作为一门服务端的脚本语言,既可以接受来自浏览器端的页面请求,也可以将页面的请求数据发送往数据库中储存起来,让页面不在静态,处于动态可以产生交互行为的状态,所以今天我们来认识下有关于数据库的一些东西。

数据库的连接

首先

  • 打开xampp apache服务器和 MYSQL database


    image.png
  • 打开localhost/phpmyadmin,创建一张数据表


    image.png

    根据关系数据库第二范式,每个表需要设置一个主键,在这里一般需要将id设为主键,主键是一个表中的约束。这个约束,一张表只能有一个,一般作为ID使用,这个约束一般给别人外键引用。这个约束的功能就是,不可重复,保证了唯一性,正是这种特性,使得大多数人都把他作为表中ID的字段使用。同时为了提高了SQL Server系统的性能,我们可以设置索引,加快数据的查询速度与减少系统的响应时间 ,在这里我们将id设为索引。

完成这些操作我们可以在编辑器上编写我们的代码连接服务器啦!!!

PHP连接数据库的方法通过 $link=mysqli_connect("数据库服务器地址","数据库登录用户","数据库登录密码","数据库名称")

在这里数据库服务器地址默认是localhost:端口号;数据库登录用户默认拥有服务器进程的用户的名称,数据库登录密码默认值是”“。

<?php 
    $link = mysqli_connect(“localhost”,"root","","mydb");
?>

写好后我们还要判断下我们是否连接上了我们的数据库,不怕一万,就怕万一埋。

判断数据库的连接正常

if(mysqli_connect_errno($link)){
    echo "错误号:".mysqli_connect_errno($link);
    echo "<br>错误描述:".mysqli_connect_error($link);
    echo "<br>错误描述:网站错误请联系管理员";
    exit;
}

在这里加入mysqli_connect_errno判断语句,当没有连接上数据库的时候,我们就输出人性化提示报错,然后就将程序结束。

我们介绍的CURD操作说白了,就是增 删 改 查,create! update !read !delete!

增删改查之”增“

确定我们的数据库连接正常后,我们就开始我们增删改查的第一步,增!!

一张空表啥都没有,所以需要我们录入数据将其补满也方便之后的前后台交互查询调用。我们在这里需要使用以下语句

 1.$sql= insert into 表名(表的字段1,表的字段2)values(字段1的值,字段2的值) ;
  2.$sql= insert into 表名 表的字段一=‘字段一的值’,表的字段二=‘字段二的值’;

然后我们需要执行查询语句mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。

  1.mysqli_query($link,$sql);

然后执行关闭数据库方法,关闭数据库

   mysqli_close($link);

我们来试着往数据库里插入一个数据

 $link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");//进行编码,防止中文出现乱码
$sql = "insert into menu set name='叉烧包',price=20";
$result=mysqli_query($link,$sql);
mysqli_close($link);
image.png

增删改查之”删“

当我们的数据录入错误的时候我们当然就要把它删去,保持数据的准确性

这里我们需要使用下列语句,这里需要借助索引减少搜查范围

delete from 表名 where

我们来尝试下

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "delete from menu where id=13";
$result=mysqli_query($link,$sql);
mysqli_close($link);
?>
删除前
删除后

增删改查之”改“

  update 表名 set 字段1='值',字段2='值' where 条件

同样我们来试试将叉烧包的价格改到288

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "update menu set price='288' where id=15";
$result=mysqli_query($link,$sql);
mysqli_close($link);
?>
image.png

增删改查之”查“

这应该是数据库里面最麻烦的部分,查询数据,各种姿势查询。

select 字段1,字段2... from 表名 where 条件

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select name,price from menu where id=15";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));//按关联数组输出所有结果集
mysqli_close($link);
?>

查询结果

image.png

带查询限制的查询语句

select 字段 from 表名 where 条件 limit size
limit 1表示只查询记录中的一条

  <?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from menu where price='288' limit 1";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

查询结果

image.png

select 字段 from 表名 where 条件 limit start,size
limit start,size 从start位置查询size条

image.png

排序

select 字段(*)from 表名 where 条件 order by 字段 desc|asc (降序、升序)
我们来看下效果

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from menu order by id DESC";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

我们可以看到表里的数据按id降序排序


image.png

分组统计查询

select count(*) from 表名 可以获得表里所有行数

<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select count(*) from menu";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);

?>
我们来看下效果


image.png

select count(*) as num from 表名 将count结果作为一个字段名检索

  <?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select count(*) as num from menu";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>
image.png

我们还可以通过分组 ground by 字段名 根据某个字段进行分组查询
group by + 多字段列表:

表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接着第2个字段值相同的记录中,再根据第3个字段的值进行分组......依次类推。

这样分组后,显然每条记录(field1,field2,...)的数据都是唯一 。

注意:
1.where条件在group by前面
2.select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面!
<?php
$link = mysqli_connect("localhost","root","","mydb");
mysqli_set_charset($link,"utf8");
$sql = "select * from student where city='上海' group by city";
$result=mysqli_query($link,$sql);
print_r( mysqli_fetch_all($result,MYSQLI_ASSOC));
mysqli_close($link);
?>

我们可以看到根据城市我们将城市为上海的成功分为一组


image.png

数据库博大精深,待我们慢慢道来,且听下回分解

相关文章

网友评论

      本文标题:PHP数据库之CURD操作

      本文链接:https://www.haomeiwen.com/subject/hmrgvxtx.html