PHP入坑之 MySqli对数据库增删改查

1年前

阅读 2039

评论 0

喜欢 0

###1、SQL:select查询语句

SQL语句中,`select`语句主要是用于查询读取数据表的中的记录,其语法结构有两种,

第一种是以指定读取的字段有哪些,多个字段之间使用`,`符号隔开。

```

SELECT 需要读取的字段1,需要读取的字段2,需要读取的字段3 FROM 表名称

```

第二种是使用`*`符号,表示读取所有字段:

```

SELECT * FROM 表名称'

```

注意:第二种在执行效率上要比第一种低很多,所以在实际开发中,我们都应该使用第一种查询方式,以防止查询出一些没用的数据,而浪费了内存开销。

下面我们来使用`mysqli_query()`函数,执行一下查询语句,查询`user`表。

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,只读取id跟name字段

$sql = "select id,name from user";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

在实际开发中,`mysqli_query()`函数执行`select`语句只能返回一个数据实例,要将这个数据实例解开我们只能使用`mysqli_fetch_all()`函数,他的返回值是一个二维数组,

如果数据实例中查询不动记录,则返回一个空数组,而不是`false`。

其语法结构如下:

```

mysqli_fetch_all(数据实例, MYSQLI_ASSOC)

```

注意,`mysqli_fetch_all()`函数默认返回的数组是数字键名,如果你需要使用字段名做为键名,可以将第二个参数设置为`MYSQLI_ASSOC`即可,

注意,使用`mysqli_fetch_array()`函数可以只获取数据实例中的第一条数据,他的返回值是一个一维数组,特殊场景同上,

如果数据实例中查询不动记录,则返回一个空数组,而不是`false`。

语法结构同上

###2、SQL:where条件

通常很多情况下,我们想要根据某些条件进行数据查询,例如:

我们只想查出姓名叫小黄牛的用户,又或者我们只想查出年龄大于18岁的用户,

又或者我们只想查出姓名叫小黄牛,并且年龄大于20岁的用户等等。

SQL语句中提供了一个`where`关键字,用于解决这种使用场景,

其语法结构如下:

```

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

```

`where`关键词主要可以使用以下运算符:

|运算符|描述|

|:--:|:--:|

|=|等于|

|!=|不等于|

|>|大于|

|

|>=|大于等于|

|<=|小于等于|

|IN|多值等于|

|NOT IN|多值不等于|

|BETWEEN AND|在范围起始 AND 范围结束|

|NOT BETWEEN AND|不在范围起始 AND 范围结束|

|LIKE|模糊搜索|

在SQL语句中,并且是使用`AND`关键字,或者是使用`OR`关键字表示。

下面我们来查出姓名叫小黄牛,并且年龄大于20岁的用户都有哪些:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,只读取id跟name字段,姓名叫小黄牛,并且年龄大于20岁

$sql = "select id,name from user WHERE name='小黄牛' AND age > 20";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

注意,当我们的`WHERE`条件中,像上述案例中一样,带有字符串条件的时候,记得带上单引号或双引号,否则将是错误的SQL语句。

###3、SQL:order by排序

有些时候,我们想要对需要查询的数据进行排序操作,

SQL语句中提供了`ORDER BY`关键字,用于根据指定的列对结果集进行排序。

ORDER BY关键字默认按照升序对记录进行排序。

其语法结构如下:

```

SELECT 列名称 FROM 表名称 ORDER BY 字段 排序关键字

```

注意:

```

ASC排序关键字代表升序

DESC排序关键字代表降序

```

例如下面我们按照年龄,做降序查询显示:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,只读取id、name跟age字段,按年龄做降序排序

$sql = "select id,name,age from user ORDER BY age DESC";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

同时`ORDER BY`关键字,还能同时对多个字段,进行不同的排序,执行优先级是从左往右,

例如下面我们先按照年龄,做升序查询,最后再按ID编号做降序查询:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,只读取id、name跟age字段,先按年龄,做升序查询,最后再按ID编号做降序查询

$sql = "select id,name,age from user ORDER BY age ASC, id DESC";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

实际开发中,如果不是业务需要,我们不要经常使用对多个字段进行同时排序的操作,因为随着排序字段的增加,会逐渐降低查询速度。

###4、SQL:limit分页

可能很多同学之前在数据库插入数据的时候,插了很多条,在运行上面案例代码的时候就会发现,每次查询出来的数据会很多,不便于阅读。

SQL语句中提供了`LIMIT`关键字,用于分段读取数据。 其语法结构如下:

```

LIMIT 起始行数,向后读取多少行数据

```

可能很多同学看不懂上面的语法结构,不用担心,下面我们来进行几条SQL语句的讲解,这样同学们就能够读懂了:

```php

select * from user LIMIT 0,10;查询从第1行开始,累加10条id记录,共显示id为1....11

select * from user limit 5,10;查询从第6行开始向前加10条数据,共显示id为6,7....15

select * from user limit 20,10;查询从第20行开始向前加10条记录,显示id为21,22...30

```

案例:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,只读取id、name跟age字段,查询从第2行开始,累加共2条记录

$sql = "select id,name,age from user LIMIT 1,2";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

###5、SQL:where、order by、limit三者的优先级

在`select`查询语句中,`where`、`order by`、`limit`三个关键字是可以同时使用的,但对书写顺序有严格的要求:

下列关键字应该从左往右书写:

```

where

order by

limit

```

当其中一个关键字不需要使用到的时候,则往右顺延,例如下面的SQL语句组合案例:

```

select * from user WHERE id=1 ORDER BY age DESC LIMIT 0,10;

select * from user ORDER BY age DESC LIMIT 0,10;

select * from user WHERE id=1 LIMIT 0,10;

```

###6、SQL:in多值等于

很多时候,我们想查询年龄等于17,或者等于20,或者等于30的用户数据,这时候如果我们用=加OR符,就需要写很长的SQL语句。

SQL为了提供了一个`IN`关键字,用于应付优化这种查询场景。

其语法结构如下:

```

WHERE 字段名 IN (参数1, 参数2, 参数3, ...)

```

如果我们希望进行排除查询,查询年龄不等于17,或者不等于20,或者不等于30的用户数据,可以使用`NOT IN`关键字,

其语法结构如下:

```

WHERE 字段名 NOT IN (参数1, 参数2, 参数3, ...)

```

注意,`IN`关键字是用在`WHERE`关键字中,做为查询语句来使用的

下面我们来编写一个简单的案例:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,查询年龄等于17,或者等于20,或者等于23的记录

$sql = "select * from user WHERE age IN (17, 20, 23)";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

###7、SQL:between and范围

很多情况下,我们想查询年龄在15到50岁之间,就要编写像这样的SQL语句:

```

WHERE age >= 15 AND age <= 50

```

然而这种书写方式是不直观的,SQL提供了一个`BETWEEN AND`关键字,用于优化上面的使用场景:

其语法结构如下:

```

WHERE 字段名 BETWEEN 范围起始值 AND 范围结束值

```

如果我们希望进行排除查询,查询年龄不在15到50岁之间的,可以使用`NOT BETWEEN AND`关键字,

其语法结构如下:

```

WHERE 字段名 NOT BETWEEN 范围起始值 AND 范围结束值

```

注意,`BETWEEN AND`关键字是用在`WHERE`关键字中,做为查询语句来使用的

下面我们来编写一个简单的案例:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义查询的SQL语句,查询年龄在15到50岁之间的记录

$sql = "select * from user WHERE age BETWEEN 15 AND 50";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

###8、SQL:like模糊搜索

`LIKE`关键字主要用于模糊搜索,带有某段内容的数据,

例如我们想查询出所有姓张的用户数据,就需要使用:

```

WHERE name LIKE '张*';这样的SQL语句。

```

`LIKE`模糊搜索还需要结合通配符来一起使用, 而上述SQL语句中使用到的`*`符号就是通配符中的一种。

下面我们先来看下`LIKE`关键字的语法结构

```

WHERE 字段名 LIKE 通配符表达式

```

下面我们再来看下,MySql中两种最常用的通配符:

|通配符|描述|

|:--:|:--:|

|*|用于表示多个字符,只能单独使用在开头或者结尾,例如张*,*仓鼠;|

|%|用于表示多个字符,可以单独使用在开头或者结尾,也可以两端同时使用,例如张%,%仓鼠,%仓%;|

|?|用于表示单个字符,例如使用小?言,那么就可以模糊搜索出小宣言、小鸡言,这样的数据;|

假设下面是`user`表中的数据:

|id|name|

|:--:|:--:|

|1|张小明|

|2|李明天|

|3|黄小天|

|4|陈明明|

|5|李大小|

下面我们通过对照上面的表,来解读各个通配符所查询出来的数据,然后理解各个通配符的具体作用和使用场景:

1、查询`name`字段中,所有以李字开头的数据,SQL语句如下:

```

select * from user WHERE name LIKE '李*';

```

也可以使用

```

select * from user WHERE name LIKE '李%';

```

2、查询`name`字段中,所有以天字结尾的数据,SQL语句如下:

```

select * from user WHERE name LIKE '*天';

```

也可以使用

```

select * from user WHERE name LIKE '%天';

```

3、查询`name`字段中,所有带明字的数据,SQL语句如下:

```

select * from user WHERE name LIKE '%天%';

```

下面我们来重点说下,通配符`*`与`%`的不同点:

我们可以使用PHP先运行下面的两段SQL看看分别出现什么结果:

```

select * from user WHERE name LIKE '*天*';

select * from user WHERE name LIKE '%天%';

```

同学们会看到:

前一条SQL语句查询出来的是所有的记录,

而后一条SQL语句查询出来的是name字段中含有天的记录,

所以说,当我们想要查询指定字段中,是否包含了某些特定的字符串时,最好使用`%`通配符,而不用`*`通配符,

`*`通配符只能在开头或者结尾时使用,而不能两端同时使用。

>老师提醒,当`%`在两端同时出现的时候,其实MySql的执行速度是非常低的,并且内存消耗也很大,所以如果不是业务需要,千万别故意使用这个查询方法。

###9、SQL:insert新增语句

一般在实际开发中,正常的情况下我们都不会使用Navicat来插入数据,而是使用SQL语句,

来将用户的一些注册登录、发布文章、购买商品等信息写入到MySql中。

`INSERT INTO`语句,用于将一行数据保存到数据库中,

其语法结构如下:

```

INSERT INTO 表名 (字段名称1, 字段名称2, 字段名称3, ...) VALUES (对应值1, 对应值2, 对应值3, ...)

```

下面,我们来编写一个小小的案例:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义新增数据的SQL语句

# 只写入ID编号 姓名 年龄三个字段内容,而性别字段的内容不写入,将会使用表中该字段的默认值

$sql = "INSERT INTO user (id, name, age) VALUES (100, '郑成功', 29)";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 注意:由于mysqli_query()只有在执行select查询语句时,才会返回数据实例,其他语句都是返回执行结果或者行数。

var_dump($res);

# 判断是否执行成功

if ($res == true) {

echo '写入成功'; exit;

}

echo '写入失败';

```

###10、SQL:update修改语句

之前我们已经学习过SQL的查询和新增语句了,下面我们继续来学习SQL中的修改语句;

`UPDATE`语句用于修改表中的数据;

其语法结构如下:

```php

UPDATE 表名 SET 字段名1=新值, 字段名2=新值, ... WHERE 修改条件

```

注意:当你在使用`UPDATE`修改语句时,如果没有指定`WHERE`条件,将会将整张表中所有的数据都修改掉,所以要小心使用。

```php

# 设置html页面为UTF-8编码

header("Content-type:text/html;charset=utf-8");

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 设置数据库为UTF-8编码

mysqli_query($DB, 'set names utf8');

# 定义修改数据的SQL语句

# 编写修改语句,将user表中,id大于2的全部数据,姓名改为小黄牛,年龄改成18岁

$sql = "UPDATE user SET name='小黄牛', age=18 WHERE id > 2";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 注意:由于mysqli_query()只有在执行select查询语句时,才会返回数据实例,其他语句都是返回执行结果或者行数。

var_dump($res);

# 判断是否执行成功

if ($res == true) {

echo '修改成功'; exit;

}

echo '修改失败';

```

注意:当你发现自己保存到数据库,或者是修改进数据库的数据是一些乱码字符串的时候,可以尝试在代码顶部,加入一句:

```

header("Content-type:text/html;charset=utf-8");

```

它用于声明浏览器的编码为`utf-8`,

如果还是不行的话,可以在执行SQL语句之前,先加入一句:

```

mysqli_query(数据库实例, 'set names utf8');

```

它用于声明之后的数据库操作使用`utf-8`编码的数据传输方式。

###11、SQL:delete删除语句

`DELETE FROM`关键字,用于删除表中的数据,同时该SQL语句要结合`WHERE`条件关键字一起使用,否则将会清空表中所有的数据记录。

其语法结构如下:

```

DELETE FROM 表名称 WHERE 删除条件

```

下面我们来编写一个小案例,删除所有ID编号大于20的数据:

```php

# 设置html页面为UTF-8编码

header("Content-type:text/html;charset=utf-8");

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 设置数据库为UTF-8编码

mysqli_query($DB, 'set names utf8');

# 定义删除数据的SQL语句

# 编写删除语句,将user表中,id大于20的数据全部删除

$sql = "DELETE FROM user WHERE id > 20";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 注意:由于mysqli_query()只有在执行select查询语句时,才会返回数据实例,其他语句都是返回执行结果或者行数。

var_dump($res);

# 判断是否执行成功

if ($res == true) {

echo '删除成功'; exit;

}

echo '删除失败';

```

###12、SQL:Join多表关联

在实际开发中,一个可能会有许多个字段用于保存用户的资料信息,同时为了加快数据的读取速度,

我们往往会将这些数据按常用和不常用分类,从而分成2个数据表进行保存。

`user`表用于保存常用信息,我们称之为主表,

`user_data`表用于保存不常用信息,我们称之为附表,同时该表里有一个字段用于保存user表中的id编号,然后通过这个id编号,我们可以使用JOIN语句,将2个表中的数据关联起来一起做SELECT操作。

注意:只有主表中的id编号设置为主键,在执行`JOIN`多表关联时,速度才会快,否则将查询速度将会很慢。

假设我们现在有以下两张表:

```

user主表,

user_data附表

```

|user主表| | | |

|:--:|:--:|:--:|:--:|

|id|name|sex|age|

|1|小黄牛|男|22|

|2|宣言|变性|20|

|3|小仓鼠|女|18|

|user_data附表|||

|:--:|:--:|:--:|

|pid|address|auto|

|1|广东广州白云|我是一只帅气的黄牛!|

|2|广东广州天河|很幼稚的一只宣言!|

|3|广东广州花都|大仓鼠一头!|

注意:`JOIN`语句,是`SELECT`查询语句中的一种条件关联关键字,它主要有4种类型的关联方式:

下面我们列出了可以使用的 `JOIN` 语法,以及它们之间的差异。

```

INNER JOIN: 如果表中有至少一个匹配,则返回行

LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

FULL JOIN: 只要其中一个表中存在匹配,就返回行

```

(上面所说的行,即表示一行数据)

其语法结构如下:

```

SELECT A.字段, B.字段 FROM A表 AS 别名 LEFT JOIN B表 AS 别名 ON A.字段 = B.字段

```

很多同学看上面的格式,可能无法理解这条SQL的语法结构,如果我们结合上面的2张表一起使用,然后编写一条SQL语句就可以理解了:

```

SELECT A.*, B.address, b.auto FROM user AS A LEFT JOIN user_data AS B ON A.id = B.pid

```

上面的SQL可以解读为:

```

查询出来的信息只要主表中的全部字段,跟附表中的address、auto字段,

user表启用别名为A

左关联的方式链接附表

user_data表的启用别名为B

关联字段为A表的id等于B表的pid

```

下面为`user_data`表的结构,同学们可自行创建该表做练习:

```php

CREATE TABLE `user_data` (

`pid` int(11) NOT NULL,

`address` varchar(50) DEFAULT NULL COMMENT '地址',

`auto` varchar(50) DEFAULT NULL COMMENT '简介'

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='会员附表';

```

下面我们来使用PHP代码,执行上面的SQL语句:

```php

# 使用MySqli连接数据库

$DB = mysqli_connect('127.0.0.1', 'root', 'root', 'love_niu', 3306);

# 定义JOIN关联查询的SQL语句

$sql = "SELECT A.*, B.address, b.auto FROM user AS A LEFT JOIN user_data AS B ON A.id = B.pid";

# 使用mysqli_query()执行SQL语句

$res = mysqli_query($DB, $sql);

# 判断是否执行成功

if ($res == false) {

echo '查询失败'; exit;

}

# 使用mysqli_fetch_all()函数可以获得查询结果,返回值是二维数组

var_dump(mysqli_fetch_all($res));

```

© 著作权归作者所有

php数据库太小要怎么改,PHP入坑之 MySqli对数据库增删改查相关推荐

  1. Android复习07【创建数据库、insert()插入数据、查看数据库、根据列索引获取参数值、根据列名-返回索引、增删改查数据、数据分页、修改表结构、Room框架】

    2020-04-09-星期四-第八周 目   录 创建数据库 insert()方法 查看数据库(Save as保存) 菜鸟教程---SQLite数据库 根据 列索引 获取 参数值 列比较多---根据列 ...

  2. mysql修改i数据库名_数据库操作之mysqli语句的增删改查0424/14:36

    基本的数据库操作 函数 mysqli_connect()连接数据库 mysqli_errno()错误编码 mysqli_error() 错误信息 mysqli_connect_errno() 数据库上 ...

  3. 系统增删查改的软件测试,软件测试人员必掌握的增删改查之简单查询

    导读 软件测试人员在工作使用SQL语言中的查询是使用得最多的,而查询也是SQL语言中最复杂的,很多测试人员只使用到其中最简单的查询 1.数据库的使用 现在在任何项目中都有数据库存在,那么在测试过程中查 ...

  4. java中的数组增删查改操作,java数组实现增删改查

    java 实现动态数组,Java工具类Arrays中不得不知的常用方法,数组实现队列java,java数组实现增删改查 java 增删改查代码 import java.sql.Connection; ...

  5. Springboot+vue 增删改查的小项目

    Springboot+vue 增删改查的小项目 文章目录 Springboot+vue 增删改查的小项目 前言 源码 1. 介绍 2.核心功能 3.软件架构 3.1 目录结构 4.项目流程 4.1导入 ...

  6. 【java】用javaSE来实现对mysql数据库的增删改查

    主程序: import Bean.StudentBean; import Impl.StudentImpl; public class T7 {     public static void main ...

  7. web端获取微信小程序云数据库数据实现增删改查等操作

    获取小程序数据库 前言 一.微信小程序Web SDK 1.微信官方示例 2.未登录模式注意事项 二.完整流程演示 1.开启云数据库访问权限 2.编写云函数 3.web前端引入js 4.web页面js访 ...

  8. 微信小程序调用数据库增删改查

    微信小程序调用数据库增删改查 php代码 获得数据库全部数据 js代码 增 wxml页面 js代码 删 js代码 改 js代码 查 js代码 输出展示 不足&改进想法 php代码 <?p ...

  9. laravel mysql增删改查_Laravel框架数据库操作的增删改三种方式 阿星小栈

    Laravel提供了3种操作数据库方式:DB facade(原始方式).查询构造器和Eloquent ORM. 数据库的配置文件在config目录下的database.php里.打开这个文件,找到my ...

  10. javaweb简单的登录增删改查系统_利用python操作小程序云数据库实现简单的增删改查!

    不止python,你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了 背景 也是在最近吧,小程序更新了云开发 HTTP API 文档,提供了小程序外访问云开发资源的能力,使用 HT ...

最新文章

  1. 删除 shiro url 上的JSESSIONID
  2. Android系统中设置TextView等的行间距
  3. wcf寄宿iis7是的 500错误
  4. __cdecl __stdcall区别-转
  5. 百度翻译接口测试(2)
  6. 【英语学习】【医学】Unit 03 Blood
  7. 梅创社c语言答案,c语言程序设计第2版) 教学课件 作者 梅创社答案 第四章答案.docx...
  8. linux amp;amp; ; amp;amp;amp;amp; ||
  9. ajax请求传递参数的方式,Ajax请求 一般处理程序参数传递的几种方式
  10. Kubernetes集群如何重启
  11. Undefined variable 'raw_input'pylint(undefined-variable)
  12. 基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶
  13. dijkastra算法实践poj2387
  14. 学习进制及数据在计算机中的表示
  15. CallBack函数调用
  16. 基于微信小程序菜谱小程序毕业设计开题报告功能参考
  17. 一个简单的BitTorrent客户端实现(二):种子文件解析及信息保存
  18. ar unity 小程序_unity可以写微信小程序吗?
  19. vue中使用hover.css动画
  20. 2019全国大学生信息安全竞赛初赛writeup

热门文章

  1. CCNA(三)-路由器
  2. [Verilog]半减器,全减器设计
  3. week7-学习写技术交底书的所得
  4. 惊艳!阿里巴巴最新发布Java系统架构师+开发应用面试突击宝典
  5. 云端抢红包能从服务器看到我微信操作吗,微信抢红包暗藏规律 悄悄告诉你诀窍...
  6. labview用户登录与管理界面设计
  7. postman下载excel出现乱码
  8. 【自动化】Python脚本selenium库完成自动创建汇联易账号
  9. 神经网络算法入门书籍,bp神经网络算法的优点
  10. 饥荒联机版Mod开发——制作简单的物品(三)