php数据库录入和输出,PHP数据库之CURD操作
前言
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操作相关推荐
- MongoDB学习系列 -- 数据库、集合、文档的CURD
前面一篇章节我们已经对MongoDB的基本概念有了一个大概的了解,从今天开始,我们将进行更细粒度的学习,首先就是数据库.集合.文档的CURD操作. 为了便于操作,减少学习难度,我们这里使用javasc ...
- 函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了...
函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了 转载于:https://www.cnblogs.com/lidepe ...
- 一个漂亮的输出MySql数据库表结构的PHP页面
经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这 ...
- R语言之MYSQL数据库获取及输出
R语言之MYSQL数据库获取及输出 在这里我们使用ODBC连接,连接之前请先配置ODBC MYSQL ODBC下载地址:http://dev.mysql.com/downloads/connecto ...
- 数据库范式的思考以及数据库的设计
数据库范式--通俗易懂[转] 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以 ...
- 《OSPF和IS-IS详解》一第6章 链路状态数据库同步6.1 OSPF数据库同步
本节书摘来自异步社区<OSPF和IS-IS详解>一书中的第6章,第6.1节,作者 [美]Jeff Doyle,更多章节内容可以访问云栖社区"异步社区"公众号查看 第6章 ...
- 数据库设计(二)——数据库设计原则
一.数据库表的设计原则 1.不应该针对整个系统进行数据库设计,而应该根据系统架构中的组件划分,针对每个组件所处理的业务进行组件单元的数据库设计:不同组件间所对应的数据库表之间的关联应尽可能减少,如果不 ...
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
最新文章
- ASP.NET Web API Model-ModelBinder
- imp 只导表前10条数据_做电商设计,你必须懂的10条数据指标
- StreamBox Ripper 将rm转mp3时候出现g2支持的问题
- 下载android版趣步最新版,趣步下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
- C++If与Switch语句
- mysql链式复制_MySQL主从服务器链式复制配置(ubuntu)
- 常用linux网络配置命令
- 工具使用教程 (一)【Git从原理到入门实用教程】
- modal verbs(一)
- JLINK 驱动 V7.00a 更新导致JLINK V9无法使用问题解决
- HCIA--华为认证初级网络工程师
- html文章整体居中,html如何实现文本上下居中
- java语音识别毕业设计,HMM的语音识别技术的毕业设计
- 失败魔咒下的企业海外并购(ZT)
- 计算机硬盘170gb,假的:《最终幻想15》PC推荐配置GTX1080Ti+170GB硬盘为误传
- 详解clickhouse分区目录的合并过程
- VS Code按住ctrl不能跳转到定义/函数(Python)
- glide 压缩图拍呢_Android图片压缩(二次采样)
- JS中的数组空位处理
- [反汇编练习]160个CrackMe之001