php中的增删,php中的增删查改

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

如果连接成功就返回一个连接对象

// 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 "新增失败
";

// 输出具体的报错信息

echo mysqli_error($conn);

}

3.4 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():提取数据生成一个数组,将数据生成为索引数组

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

读取全部的数据

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

// 如果需要获取多行,则需要重复调用相同的方法,如果没有数据,则返回NULL

// !!!!而数据到底有多少,则未可以,所以循环的话并不知道何时停止,while循环就比较适合

while ($arr = mysqli_fetch_array($result, MYSQL_ASSOC);) {

$res[] = $arr;

}

print_r($res);

?>

最终查询代码(完整版)

// 设置响应头

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);

}

?>

作者:羽翼的翼

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值