前言
PHP作为一门服务端的脚本语言,既可以接受来自浏览器端的页面请求,也可以将页面的请求数据发送往数据库中储存起来,让页面不在静态,处于动态可以产生交互行为的状态,所以今天我们来认识下有关于数据库的一些东西。
数据库的连接
首先
-
打开xampp apache服务器和 MYSQL database
-
打开localhost/phpmyadmin,创建一张数据表
根据关系数据库第二范式,每个表需要设置一个主键,在这里一般需要将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);
增删改查之”删“
当我们的数据录入错误的时候我们当然就要把它删去,保持数据的准确性
这里我们需要使用下列语句,这里需要借助索引减少搜查范围
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);
?>
增删改查之”查“
这应该是数据库里面最麻烦的部分,查询数据,各种姿势查询。
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);
?>
查询结果
带查询限制的查询语句
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);
?>
查询结果
select 字段 from 表名 where 条件 limit start,size
limit start,size 从start位置查询size条
排序
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降序排序
分组统计查询
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);
?>
我们来看下效果
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);
?>
我们还可以通过分组 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);
?>
我们可以看到根据城市我们将城市为上海的成功分为一组
数据库博大精深,待我们慢慢道来,且听下回分解