php中的增删查改

作者: 羽翼的翼 | 来源:发表于2019-02-24 13:48 被阅读4次

php操作SQL

1、 数据库中的增删查改

1.1、查询

语句:select 什么内容from 表名 where 判断条件

查询可以返回一个结果集,是一个列表

查询在这张表里面的所有id列和name列     
select id,name from mytable  
带条件的查询   
select * from mytable where id = 3   
查询年龄小于20岁的   
select * from mytable where age < 20     
查询年龄小于20岁,性别为女生  
and or not
select * from mytable where age < 20 and gender = 0  

1.2、增加

语句:insert [into] 表名[(字段1, 字段2,...)] values(值1,值2)

-- 表名后没有指定字段,那么必须设置对应数量的值,并且主键不能重复
insert into mytable values('lili', 30, 0) -- 没有id的值,所以报错
-- 如果有标识列,一般可以给null值,系统会自动生成
insert into mytable values(null, 'lili', 30, 0)

-- 指定需要添加数据的字段
insert into mytable(name, age, gender) values('lili', 30, 0)

-- 对于值为null的值,可以不写
insert into mytable(name) values("ok")

-- 非空字段需要赋值,否则系统也不会自动为其生成默认值
insert into mytable(age,gender) values(40, 1) -- 虽然可以,但是不建议漏掉非空字段    

1.3、修改

语句: update 表名 set 字段1 = 值1, 字段2 = 值2

update mytable set age = age + 1 -- 会把所有的都改变
-- 带条件的写法,只会改变第5条
update mytable set age = age + 10 where id = 5
-- 同样支持  or  and  not
-- 修改多个内容
update mytable set age = age + 1,gender = 1 where id = 5     

1.4、删除

不要轻易删除内容!!!!

语法:delete [from]表名 where 条件 (from可以省略)

-- 删除的操作不能还原,要删除的话,就需要提前备份
delete from mytable where id = 8
-- 同时删除多个
delete from mytable where id in(4,5)
delete from mytable where id in(4,5)     

小结

==>  查询是返回受影响的内容

==>  增加、删除和修改是返回受影响的行数   

2、常见的函数说明

2.1、总条数 count

-- 查询可以满足条件的记录数
select count(*) from mytable

-- 选择符合条件的记录数
select count(id) from mytable

-- 如果当前空值,不会对null值进行计算

2.2、最大值、最小值 max min

得到当前的那个值

-- max 获取最大值  min  获取最小值
select max(age) from mytable

-- 如果是字符,按照字符的ascll码来排序

2.3、平均值 avg

-- 一般都是数值
select svg(age) from mytable

2.4、排序 order by

select * | 字段列表  form  表列表  where order by     asc 升序    desc   降序

select * from mytable

-- 降序
select * from mytable order by id desc

-- 按照name排序  a-z
select * from mytable order by name

-- null值会排在前面

-- 实现按照性别,再按照年龄
select * from mytable order by gender,age

2.5、获取指定范围内的数据

limit  获取指定的前n条记录   只有一个参数

-- 前面3条数据
select * from mytable limit 3

-- 后面五条
-- 先做降序,然后再去筛选,并且一定要先排序,再获取,不然会报错
select * from mytable order by id desc limit 5

-- 中间范围的记录   n 偏移量从0开始, m 能够获取的记录数
select * from mytable limit 2,2

-- 第2种写法,和上面的一样
select * from mytable limit 4 offset 2

制作分页

int pageSize = 10;
int pagecount = 1;

select * from mytable pageSize 4 offset (pagecount - 1) * pageSize

2.6、多表查询

在数据中,防止重复存储数据,所以会把不同的数据放在不同的地方存储

-- 返回初始的数据,没有内部关联的数据
select * from student

-- 用户需要的是最终的结果
-- 1.0 采用from where的方式
select * from student,class where student.cid = class.classid
where后面的这个 = 表示判断

-- 简写
select studentId,studentName,age,gender,className from student,class where student.cid = class.classid 

-- 2.0  join 和 inner join都是一样的   on和where的意思也是差不多的
select * from student inner join class on student.cid = class.classid


-- left join   如果对应不上的时候,自动让对应的值为空   right join 与之相反
select * from student left join class on student.cid = class.classid    
left join 是左边的数据会全部显示出来     right join 右边的数据会全部显示出来  

3. PHP建立数据库连接

3.1 建立与服务器的连接

mysqli_connect(设置主机,用户名,密码,想操作的数据库)

这个函数会自动打开连接

如果连接失败,返回false
如果连接成功就返回一个连接对象

<?php
    // 1.0 设置响应头
    header("Content-Type:text/html;chartset=utf-8");

    // 2.0 创建数据库连接
    $conn = mysqli_connect("localhost", "root", "root", "mybase");

    // 3.0 设置编码
    // mysqli_set_chartset($conn, "utf8");
    mysqli_query($conn, "set name as utf-8"); // 设置编码格式为utf-8

    if(!$conn) {
        die("连接失败");
} 

3.2 解决乱码问题

mysqli_set_chartset($conn, "utf8");  //设置数据库编码   
header("Content-Type:text/html;chartset=utf-8");  PHP与浏览器编码一致的问题     

3.3 PHP操作sql增加、修改和删除

执行sql语句 mysqli_query(连接对象, sql语句) 有返回值, 成功为true, 失败为false

// 1.0 新增数据 创建sql语句(删除,修改结合上边数据库的语句 类似的)     

// 2.0 数据库中字符串必须写在单引号或者双引号中间
$sql = "insert into mytable value(null, '张三', 30, 1)";   
$result = mysqli_query($conn, sql);  

// 3.0 $result  返回类型为bool类型 ,成功为true ,失败为false
var_dump($result); // bool(true)    |    bool(false)     

if($result) {
    echo "新增成功";
} else {
    echo "新增失败<br>";
    // 输出具体的报错信息
    echo mysqli_error($conn); 
}    

3.4 php查询

因为查询到的是结果集 所以会和增加 删除 修改语句不一样

<?php
    // 1.0 设置响应头
    header("Content-Type:text/html;chartset=utf-8");

    // 2.0 创建数据库连接
    $conn = mysqli_connect("localhost", "root", "root", "mybase");

    // 3.0 设置编码
    // mysqli_set_chartset($conn, "utf8");
    mysqli_query($conn, "set name as utf-8"); // 设置编码格式为utf-8

    if(!$conn) {
        die("连接失败");
    } 

    // 4.0 创建查询sql语句
    $sql = "select * from mytable";
    
    // 5.0 执行sql语句   
    $result = mysqli_query($conn, $sql);
    var_dump($result);  // 获取到大致信息,几行几列,但是并不是具体的数据   
?>

mysqli_num_rows($result) 判断当前结果集中是否有数据

展示结果集中的内容:

mysqli_fetch_array() :提取数据生成一个数组.同时生成索引数组和关联数组两种形式
mysqli_fetch_assoc():提取数据生成一个数组:将数据生成关联数组

mysqli_fetch_row():提取数据生成一个数组,将数据生成为索引数组

都只会读取一行数据,但是在读取完毕之后,会将指针指向下一行

读取全部的数据

<?php    
    // 上面的函数都只会读取一行数据,但是在读取完毕之后,会将指针指向下一行 
    // 如果需要获取多行,则需要重复调用相同的方法,如果没有数据,则返回NULL
    
    // !!!!而数据到底有多少,则未可以,所以循环的话并不知道何时停止,while循环就比较适合
        while ($arr = mysqli_fetch_array($result, MYSQL_ASSOC);) {
        $res[] = $arr;
    }
    
    print_r($res);
?>   

最终查询代码(完整版)

<?php
    // 设置响应头
    header('content-type:text/html;charset=utf-8'); 
    $conn = mysqli_connect('localhost','root','root','mytable');
    // 判断是否连接成功  失败会返回false 成功呢会返回一大串东西
    if (!$conn) {
    die('连接失败');
    }
    // 成功后写SQL语句
    // 增加语句
    // $sql = "insert into people values(null,'jan','男','2019-1-1','222','12') ";
    // 修改语句  修改多个的时候where左边逗号右边用or
    // $sql = "update people set age=18,sex='男' where id = '1' or id='3'";
    // 删除
    // $sql = "delete from people where id = '4' ";
    // 查询
    $sql = "select * from people";
    $result = mysqli_query($conn,$sql);
    if (!$result) {
    die ('查询失败');
    } else if (mysqli_num_rows($result) == 0) {
    die ('没有结果');
    } else { 
    // 查询成功
    while($arr = mysqli_fetch_assoc($result)) {
    $res[] = $arr;
    }
    print_r($res);
    }
?>   

相关文章

  • php中的增删查改

    php操作SQL 1、 数据库中的增删查改 1.1、查询 语句:select 什么内容from 表名 where ...

  • 一个小小的留言本

    需求分析:用户可以在留言本留言,并对内容进行增删查改。 涉及知识点: PHP语言 数据库的增删查改 留言页面 wr...

  • configparser配置文件模块

    Menu configparser定义 创建configparser文件 增删改查 - 查 增删改查 - 改 增删...

  • Spring Boot——增删查改(1)

    Spring Boot增删查改 标签: SpringBoot 增删查改是最为基础的功能,在很多场景下都有运用。本文...

  • MySQL增删改查(2)

    上一篇回顾了增删改查中的增,这篇回顾增删改查中的“改”和“删”。先回顾“改”,免得需要删了以后没有足够数据用来复习...

  • Arraylist和Linkedlist

    Arraylist:底层是数组结构,增删慢改查快. Linkedlist:底层是链表结构,增删快 改查慢. Arr...

  • Java集合之ArrayList - 吃透增删查改

    Java集合之ArrayList - 吃透增删查改 从源码看初始化以及增删查改,学习ArrayList。 先来看下...

  • PHP中增删改查

    一.增 当出现undefined时,指没有数据,利用查询字符串的方式(路由传参) 2.>创建一个.html文件--...

  • DartVM服务器开发(第十五天)--Jaguar_ORM一对一

    DartVM服务器开发(第十四天)--Jaguar_ORM增删查改 上一篇文章中讲解了如何使用数据库中的增删查改,...

  • PHP操作Redis增删查改笔记

    业务需求:我要解决课程秒杀,于是我用了redis五种数据类型的字符串类型,原因是因为有个自增,自减,适合秒杀。因为...

网友评论

    本文标题:php中的增删查改

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