PHP 和 mysql

第一节

webserver

​ Web Server 中文名称叫网页服务器或 web 服务器。WEB 服务器也称为 WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务

​ Web 服务器可以解析(handles)HTTP 协议。当 Web 服务器接收到一个 HTTP 请求(request),会返回一个 HTTP 响应(response),例如送回一个 HTML 页面。为了处理一个请求(request),Web 服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如 CGI 脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端技术。无论它们(译者注:脚本)的目的如何,这些服务器端的程序通常产生一个 HTML 的响应(response)来让浏览器可以浏览

通俗的讲,当你在浏览器输入一个网址的时候,就发起了一个 http 请求,请求某一个服务器,然后服务器 上的程序(服务端)决定给你什么网页

Apache 服务器

Apache HTTP Server(简称 Apache)是 Apache 软件基金会的一个开放源码的网页服务器

apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩充,将 Perl/Python 等解释器编译到服务器中。同时 Apache 音译为阿帕奇。

Apache 的诞生极富有戏剧性。当 NCSAWWW 服务器项目停顿后,那些使用 NCSAWWW 服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了 Apache Group,后来这个团体在 NCSA 的基础上创建了 Apache。

集成环境安装

​ 许多人通过他们自己的经验认识到安装 Apache 服务器是件不容易的事儿。如果您想添加 MySQL(数据库,存数据)、PHP(后端编程语言),那就更难了。

​ WAMP(window+Apache+MySQL+PHP)是一个功能强大的建站集成软件包。

​ XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包。

​ XAMPP 是一个易于安装且包含 MySQL、PHP 和 Perl 的 Apache 发行版。XAMPP 的确非常容易安装和使用:只需下载,解压缩,启动即可。

​ 安装包在群共享 软件安装包这个文件下,安装过程中一直下一步即可,最好不要更改设置。

​ 启动 xampp 软件,在 win 开始菜单-所有程序中找到如图的选项

img

点击打开 xampp control,弹出如下图,点击两个 start 按钮,启动 apche 和 mysql

img

最后结果下图,绿色的说明启动服务器和数据库成功

img

然后再浏览器中输入你的 ip 地址,或者输入 127.0.0.1,就可以访问我们的服务器了

wamp-》启动,变绿,c/wamp/www 目录,里面的的东西都删除,放入自己的文件,127.0.0.1 localhost

http 默认的端口 80

https 默认的端口 443

http://localhost/

php 运行环境介绍

PHP(PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。

php 程序开发快,运行快,技术本身学习快。嵌入于 HTML:因为 PHP 可以被嵌入于 HTML 语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。

PHP 是运行在服务器端的脚本,可以运行在 UNIX、LINUX、WINDOWS、Mac OS、Android 等平台

js 运行需要 js 引擎,php 运行也需要 php 引擎,服务器上只有安装了 php 运行环境(php 引擎),才能运行 php 代码!

服务器的根目录

​ 安装 xampp 的时候,默认把这个软件安装到了 C:\xampp 这个路径下,这个路径下面我们可以找到 apach,mysql,php 这三个软件的安装路径,一般不要动他们!

img

上面图片中的 htdocs 文件夹(htmldocuments),就是我们服务器的根目录,只要你在浏览器输入我们服务器的域名或者 ip 地址就能访问这个文件夹下的文档!

去看看里面都有什么文件,在浏览器中输入你自己的 ip 地址,访问这个服务器试一试。

你会发现出现的是英文网页,因为访问服务器的时候会优先让浏览器显示 index 开头的文件, 比如 index.html ,index.php 等等,所以说一般我们的首页都是 index.html。

vscode 插件 PHP Intelephense

现在我们可以先把 htdocs 这个文件夹里面的文件全部删掉,放入你写好的网页,在浏览器输入自己的 ip,看看能不能显示出来!

尝试创建要给 01.php 文件,写下面的代码

1
2
3
4
5
6
7
<?php

echo 'hello world' ;//必须加分号

echo '<h1>haha</h1>' ;

?>

在浏览器中输入自己的 ip 地址,看看效果!

如果看到了鼎鼎大名的 hello world,恭喜你已入坑 php(php 是世界上最好的语言,哈哈)

然后听你们帅(fang)气(pi)的翔哥给你们讲一个真实的故事。。。img

PHP 基础语法

  • 我们一定要知道,php 是另一个语言了,不再是我们的 html / javascript
  • 一个别的语言就有人家语言的规则

php 文件

  • 我们在写 javascript 的时候,是一个 .js 文件
  • 我们在写 html 的时候,是一个 .html 文件
  • php 的代码写在一个 .php 后缀的文件中

php 文件的书写

  • 所有的 php 代码都要写在一个 php 的范围内

  • 要求以 <?php 开头

  • 要求以 ?> 结尾

    1
    2
    3
    4
    5
    <?php

    # php 的代码写在这里

    ?>

简单了解 php 的语法

  • 每个语言都会有自己的语法
  • 接下来我们就简单了解一下 php 的语法规则
  • php 里面有一个必须要注意的点 每一个语句后面都要有 ;

定义变量

  • 在 php 中没有 var 关键字给我们定义变量

  • 直接使用 $ 来确定一个变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php

    # 下面就是一个定义了一个变量,并且赋值为 100
    # 变量名就是 $num
    $num = 100;

    $boo = true;

    # 下面是一个字符串
    $str = "你好 php";


    ?>
1

输出语法(打印) + 把一些内容给到请求的宿主 + echo 你要输出的内容; + 只能输出所谓的基本数据类型 + print_r(你要输出的内容); + 可以输出复杂数据类型 + var_dump(你要输出的内容); + 会把每一个数据的详细信息一起输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19



#### 条件语句

- 在 php 中使用条件语句和 js 基本一致

```php
<?php

$boo = true;

if ($boo) {
echo '你好,欢迎观临!';
} else {
echo '您还没有登陆';
}

?>

循环语句

  • 在 php 中循环语句和 js 基本一致

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php

    $num = 5;

    for ($i = 0; $i < $num; $i++) {
    echo 'hello php';
    }

    ?>

字符串拼接

  • 在 php 中,字符串拼接不再是使用 + 进行拼接了,而是使用 . 进行拼接

    1
    2
    3
    4
    5
    $str = 'hello ';
    $str2 = 'world';
    $str3 = $str . $str2;
    echo $str3;
    # 得到的就是 hello world

数组

  • 在 php 中的数组和 js 中特别不一样

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php

    # 创建一个数组
    $arr = array(1, 2, 3);

    print_r($arr);
    # Array ( [0] => 1 [1] => 2 [2] => 3 )
    # 这个就类似于我们 js 中的数组,按照索引来的

    # 创建一个关联数组
    $arr2 = array('name' => 'Jack', 'age' => 18, 'gender' => '男')
    print_r($arr2)
    # Array ( [name] => Jack [age] => 18 [gender] => 男 )
    # 这个就类似于我们 js 中的 对象,键值对的形式

    ?>

第二节

数据库(mysql)概念(数据库,表,主键)

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    • 数据库: 数据库是一些关联表的集合
    • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。(类似 Excel 表格)
    • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。(类似人的身份证信息)

数据类型

​ MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

INT 或 INTEGER 大整数值

decimal 类型可以精确地表示非常大或非常精确的小数 ,用于定义货币要求精确度高的数据

字符串类型

VARCHAR 变长字符串

日期和时间类型

DATETIME 混合日期和时间值 格式 YYYY-MM-DD HH:MM:SS

0-安装 navcat 软件

软件在群共享中(navicat112_premium_cs_x64.exe),有 32 位和 64 位的,一般现在的系统都是 64 位的,点 击 navicat112_premium_cs_x64.exe 安装,安装过程中全部下一步即可。安装完成后软件包里还有一个 PatchNavicat.exe,点击破解激活

img

1-启动数据库

打开 xmpp-control pannel, 如图启动 mysql 数据库

img

2-连接数据库

打开桌面上的 Navicat 图标

img

打开软件以后点击 连接,选择 mysql

img

弹出如下界面,连接名随便起一个,密码为空不用谢,点击确定就连接上了数据库

img

3-创建数据库

​ 双击列表中 test,就能打开数据库连接,点击左键,选中 新建数据库 ,如下图

img

输入数据库名称 ,选择 uft-8 字符集

img

4-创建表

​ 选中 表,点击新建表 即可创建 数据表

img

5-在表中添加字段

​ 在表中添加如下字段,并将 id 设置为主键

id 是用户的的主要标识信息,注意将 id 设置为自动递增

usename 是用户名

time 是时间

money 是金钱

img

img

6-保存表

img

选中 student 表,出现如下界面,界面底部有增加,删除,保存按钮,点击增加按钮,出现一行数据(红色的),输入姓名,时间(点击三个点选择时间),金钱,点击下面对号保存数据。(注意 id 不用写,是自动增长的)

img

把表中数据导出为 Excel 表格

img

mysql 增删改查数据

查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT

student.id,

student.username,

student.time,

student.money

FROM

student

WHERE

student.id = 1 Limit 10

上面语句查询了 id 为 1 的学生信息,返回十条数据

也可以

1
SELECT  *  FROM  student  WHERE  student.id > 1 Limit 10

插入

INSERT INTO student (username, time, money) VALUES (‘赵云’, ‘2018-05-15 23:53:52’, ‘44’);

修改

UPDATE student SET username=’韩信’ WHERE (id=’10’)

删除

DELETE FROM student WHERE (id=’4’)


php 代码中使用 mysql

php 链接 mySql

连接到 MySQL 服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$dbhost = 'localhost:3306';  // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = ''; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if($conn )

{

echo '数据库连接成功!';

}

在 php 代码中执行 sql 语句 查询

$retval = mysqli_query( $conn, $sql )

conn 是数据库链接

sql 是一个字符串,里面写 sql 语句

retval 是一个结果集(对象)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

//先链接数据库


// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");

//编写sql语句

$sql = 'SELECT * FROM student WHERE student.id > 1';

//选择要查询的数据库名称

mysqli_select_db( $conn, 'db1' );

//查询数据,返回查询的结果集

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

​ die('无法读取数据: ' . mysqli_error($conn));

}


?>

查询结果集处理

mysqli_fetch_array 从结果集中取得一行作为数字数组或关联数组,如果结果集中有多条结果,第一调用函数,获取第一条结果,第二次调用能获取第二条结果,所有我们可以用循环遍历结果集

用法 mysqlifetch_array(_result,resulttype)

参数 描述
result 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
resulttype 可选。规定应该产生哪种类型的数组。可以是以下值中的一个:MYSQLI_ASSOC 或者 MYSQLI_NUM 或者 MYSQLI_BOTH
1
2
3
4
5
6
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))

{
echo $row['username'];

}

插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = ''; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

echo '连接成功<br />';

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");



$username = '鲁班七号';

$money = '250';

$time = '2018-03-06';

//注意这里在字符串内部也可以写变量

$sql = "INSERT INTO student ".

​ "(username,money, time) ".

​ "VALUES ".

​ "('$username','$money','$time')";



mysqli_select_db( $conn, 'db1' );

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

die('无法插入数据: ' . mysqli_error($conn));

}

echo "数据插入成功\n";

mysqli_close($conn);

?>

修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = ''; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

echo '连接成功<br />';

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");



$sql = "UPDATE student SET username='韩信33' WHERE (id='10')";



mysqli_select_db( $conn, 'db1' );

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

die('无法更改数据: ' . mysqli_error($conn));

}

echo "数据更新成功\n";

mysqli_close($conn);

?>

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = ''; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

echo '连接成功<br />';

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");





$sql = "DELETE FROM student WHERE (id='6')";



mysqli_select_db( $conn, 'db1' );

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

​ die('无法删除数据: ' . mysqli_error($conn));

}

echo '数据删除成功!';

mysqli_close($conn);

?>