前言

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

数据库的连接

首先

打开xampp apache服务器和 MYSQL database

image.png

打开localhost/phpmyadmin,创建一张数据表

image.png

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

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

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

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

$link = mysqli_connect(“localhost”,"root","","mydb");

?>

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

判断数据库的连接正常

if(mysqli_connect_errno($link)){

echo "错误号:".mysqli_connect_errno($link);

echo "
错误描述:".mysqli_connect_error($link);

echo "
错误描述:网站错误请联系管理员";

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

我们来尝试下

$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

$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 条件

$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表示只查询记录中的一条

$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 (降序、升序)

我们来看下效果

$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 表名 可以获得表里所有行数

$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结果作为一个字段名检索

$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 后面!

$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数据库录入和输出,PHP数据库之CURD操作相关推荐

  1. MongoDB学习系列 -- 数据库、集合、文档的CURD

    前面一篇章节我们已经对MongoDB的基本概念有了一个大概的了解,从今天开始,我们将进行更细粒度的学习,首先就是数据库.集合.文档的CURD操作. 为了便于操作,减少学习难度,我们这里使用javasc ...

  2. 函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了...

    函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了 转载于:https://www.cnblogs.com/lidepe ...

  3. 一个漂亮的输出MySql数据库表结构的PHP页面

    经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这 ...

  4. R语言之MYSQL数据库获取及输出

    R语言之MYSQL数据库获取及输出 在这里我们使用ODBC连接,连接之前请先配置ODBC MYSQL  ODBC下载地址:http://dev.mysql.com/downloads/connecto ...

  5. 数据库范式的思考以及数据库的设计

    数据库范式--通俗易懂[转] 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以 ...

  6. 《OSPF和IS-IS详解》一第6章 链路状态数据库同步6.1 OSPF数据库同步

    本节书摘来自异步社区<OSPF和IS-IS详解>一书中的第6章,第6.1节,作者 [美]Jeff Doyle,更多章节内容可以访问云栖社区"异步社区"公众号查看 第6章 ...

  7. 数据库设计(二)——数据库设计原则

    一.数据库表的设计原则 1.不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间所对应的数据库表之间的关联应尽可能减少,如果不 ...

  8. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  9. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. ASP.NET Web API Model-ModelBinder
  2. imp 只导表前10条数据_做电商设计,你必须懂的10条数据指标
  3. StreamBox Ripper 将rm转mp3时候出现g2支持的问题
  4. 下载android版趣步最新版,趣步下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
  5. C++If与Switch语句
  6. mysql链式复制_MySQL主从服务器链式复制配置(ubuntu)
  7. 常用linux网络配置命令
  8. 工具使用教程 (一)【Git从原理到入门实用教程】
  9. modal verbs(一)
  10. JLINK 驱动 V7.00a 更新导致JLINK V9无法使用问题解决
  11. HCIA--华为认证初级网络工程师
  12. html文章整体居中,html如何实现文本上下居中
  13. java语音识别毕业设计,HMM的语音识别技术的毕业设计
  14. 失败魔咒下的企业海外并购(ZT)
  15. 计算机硬盘170gb,假的:《最终幻想15》PC推荐配置GTX1080Ti+170GB硬盘为误传
  16. 详解clickhouse分区目录的合并过程
  17. VS Code按住ctrl不能跳转到定义/函数(Python)
  18. glide 压缩图拍呢_Android图片压缩(二次采样)
  19. JS中的数组空位处理
  20. [反汇编练习]160个CrackMe之001

热门文章

  1. 搜索引擎排名不友好的五个地点-SEO
  2. Lync 小技巧-47-错误-44009-引起-证书-规划-Lync与UM
  3. 【2012百度之星资格赛】G:聊天就是Repeat
  4. CentOS 5.3 已经发布!
  5. 贪婪算法近似集合覆盖问题的解
  6. Mybatis最入门---代码自动生成(generatorConfig.xml配置)
  7. easyui-combobox的取值问题
  8. IntelliJ IDEA 15快捷键大全
  9. Golang类型转化方法汇总
  10. 反思代码优化点:trycatch 验证类 封装用户变量