PHP
- 方便和后端开发人员进行交互
外部三部分:html css JavaScriptPhpstudy使用说明:
1、不要用中文
2、启动Nginx mysql
3、统一phpstudy版本网站-管理-安装5.4.45版本
4、web服务的根目录 D:\WindowsApps\phpstudy_pro\WWW
5、如何访问服务器上文件http://localhost 默认访问根目录下index文件http://127.0.0.1 环回IP 默认访问根目录下的index文件http://自己分配的ip 自己能访问,其他人(同一局域网)也能访问以上三种方式,默认都会访问到www目录
6、服务器环境访问页面,缓存问题比较突出(清除缓存刷新)
基本组织架构
我们一个网站的组织架构基本上由下面的步骤完成
- 用户 => 前端 => 后端 => 数据库
传输协议
-
限制用户和服务器之间交流传输数据的方式和规则
-
规则
- 建立连接通道
- 相互通信
- 关闭连接通道
-
只不过
http
是一种常见协议,不是很安全 -
https
是一种加密传输协议
端口号
- http 协议默认是 80 端口号
- https 协议默认是 443 端口号
- apache服务器默认端口80
- mysql服务器默认端口3306
PHP 基础语法
变量区分大小写,只识别双引号变量
-
要求以
<?php
开头要求以?>
结尾 -
必须设置响应头信息
-
header('Content-Type:text/html;charset=utf-8');
<?php # php 的代码写在这里 ?>
超全局变量:在任何作用域都能直接访问
$_REQUEST 通过此超全局变量,可以接收到前端通过get或post方式传递过来的参数
$_GET 前端通过get方式传递过来的参数
$_POST 前端通过post方式传递过来的参数
将数组转为json字符串:json_encode()
$arr = array('a' => 'hi', 'b' => 'hello', 'c' => '你好');
echo json_encode($arr); //会对中文unicode编码
echo json_encode($arr, JSON_UNESCAPED_UNICODE); //不对中文unicode编码
将json字符串转为数组:json_decode()
$json = '{"a":111,"b":222,"c":333,"d":444,"e":555}';
var_dump(json_decode($json, true)); // true 转为关联数组
关闭错误报告
error_reporting(0);
定义变量
<?php
# 下面就是一个定义了一个变量,并且赋值为 100
# 变量名就是 $num
$num = 100;
$boo = true;
# 下面是一个字符串
$str = "你好 php";
?>
条件语句
-
在 php 中使用条件语句和 js 基本一致
<?php $boo = true; if ($boo) { echo '你好,欢迎观临!'; } else { echo '您还没有登陆'; } ?>
循环语句
-
在 php 中循环语句和 js 基本一致
<?php $num = 5; for ($i = 0; $i < $num; $i++) { echo 'hello php'; } ?>
字符串拼接
-
在 php 中,字符串拼接不再是使用
+
进行拼接了,而是使用.
进行拼接$str = 'hello '; $str2 = 'world'; $str3 = $str . $str2; echo $str3; # 得到的就是 hello world
数组
-
在 php 中的数组和 js 中特别不一样
<?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 中的 对象,键值对的形式 echo json_encode($arr2);//把数组转成json字符串 ?>
MySQL
关系数据库管理系统(Relational Database Management System)的特点
数据以表格的形式出现
每行为各种记录名称
许多的行和列组成一张表单
若干的表单组成database
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
数据库的数据类型
- 数值类型
类型 | 大小 | 用途 |
---|---|---|
TINYINT | 1 字节 | 小整数值 |
SMALLINT | 2 字节 | 大整数值 |
MEDIUMINT | 3 字节 | 大整数值 |
INT或INTEGER | 4 字节 | 大整数值 |
BIGINT | 8 字节 | 极大整数值 |
FLOAT | 4 字节 | 单精度 浮点数值 |
DOUBLE | 8 字节 | 双精度 浮点数值 |
DECIMAL | 小数值 |
- 日期和时间类型
类型 | 格式 | 用途 |
---|---|---|
DATE | YYYY-MM-DD | 日期值 |
TIME | HH:MM:SS | 时间值或持续时间 |
YEAR | YYYY | 年份值 |
DATETIME | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | YYYYMMDD HHMMSS | 时间戳 |
- 字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
操作数据库
- 使用 php 链接 mysql 数据库进行数据的增删改查
- 想要操作数据库,除了需要 php 的语法以外,还需要一个 mysql 的 sql 语句
- 使用 php 操作数据库的步骤
- 和数据库建立链接
- 使用 sql 语句对数据库进行操作
- 获取结果
- 和数据库的链接断开
通过php操作mysql
连接mysql ->选择数据库->编写sql语句->执行sql语句-> 解析结果
1、连接数据库
$link = mysqli_connect(‘主机(域名/IP地址)’,‘用户名’,‘密码’,‘数据库’);
<?php
# 下面就是建立链接,$link 会得到一个链接信息
$link = mysqli_connect('localhost','root','123456','db_gp03'); // 连接数据库db_gp03
if (!$link){
echo '连接失败:'.mysqli_connect_error();
die();//结束程序,后面的代码不再执行
}
echo '连接成功';
?>
2、设置编码·
mysqli_set_charset( $link, "utf8" );
3、执行 sql 语句操作数据库
<?php
# 下面就是使用 sql 语句对数据库进行操作
"insert into user set name='小张',sex='女',age='21'"; #向表中添加数据
参数1 连接对象 参数2 要执行的sql语句
$res = mysqli_query($link,$sql);
?>
if ($num > 0) {
echo '添加成功';
} else {
echo '添加失败';
}
- 这里有一个注意的点:
- 我们拿到的结果是一个我们看不懂的处理信息
- 需要使用 mysql_fetch_row || mysql_fetch_assoc 解析一下结果才能看得懂
- 执行sql语句之后,数据库受影响的条数
$num = mysqli_affected_rows($link);
echo $num;//1
关闭链接
-
全部用完以后我们最好是关闭一下数据库链接
<?php mysql_close($link); ?>
完整步骤
<?php
// 设置响应头信息
header('Content-Type:text/html;charset=utf-8');
// 1.连接数据库
$link = mysqli_connect('localhost','root','root','ren');
if (!$link){
echo '连接失败:'.mysqli_connect_error();
die();//结束程序,后面的代码不再执行
}
echo '连接成功';
// 2.执行sql语句
// 添加一条数据
$sql = "insert into user(name,sex,age,phone) values('小东','男',28,'13377883333')";
// 参数1 连接对象 参数2 要执行的sql语句
$res = mysqli_query($link,$sql);
// 执行sql语句之后,数据库受影响的条数
$num = mysqli_affected_rows($link);
// echo $num;//1
if ($num > 0) {
echo '添加成功';
} else {
echo '添加失败';
}
// 关闭数据库mysqli_close($link);
?>
常用的 sql 语句
查
-
查询语句
<?php # 查询 student 这个表里面的所有数据 $sql = 'select * from `student`'; # 查询 student 表中的数据里面 gender 为 男 的数据 $sql = 'select * from `student` WHERE `gender`="男"'; # 查询 student 表中的数据里面 age 大于 18 的数据 $sql = select * from `student` WHERE `age`>18'; # 查询 student 表中的数据里面 age 大于 18 且 gender 为 男 的数据 $sql = 'select * from `student` WHERE `age`>18 AND `gender`="男"'; # 查询 student 表中的数据里面 age 小于 22 或者 age 大于 28 的数据 $sql = 'select * from `student` WHERE `age`<22 OR `age`>28'; # 查询 student 表中的数据里面从 第几条开始 查询多少条 $sql = 'select * from `student` LIMIT 0, 10'; # 先按照条件筛选出数据以后再进行分页查询 # 下面是查询表中所有 age>18 且 性别为男的所有数据,查出来以后从第 10 条开始查 10 条 $sql = 'select * from `student` WHERE `age`>18 AND `gender`="男" LIMIT 10, 10'; # 查询表的模糊查询 # 下面表示查询表中所有数据里面 name 字段中包含 "三" 字的数据 $sql = 'select *from `student` WHERE `name` LIKE "%三%"'; # 查询排序,查询的时候按照某一个字段升序或降序排序 $sql = 'select * from `student` ORDER BY `age` ASC'; $sql = 'select * from `student` ORDER BY `age` DESC'; ?>
增
-
增加语句
<?php # 向表中增加一条数据,再增加的时候主键不能由我们书写,而是 mysql 数据库自己递增 $sql = 'INSERT INTO `student` VALUES(null, "张三", 18, "男", 1913, 100)'; # 插入固定几个键的数据,其他的用默认值 $sql = 'INSERT INTO `student` (`name`, `age`) VALUES("李四", 22)'; ?>
删
-
删除语句
<?php # 删除表中 id 为 100 的数据 $sql = 'DELETE FROM `student` WHERE `id`=100'; # 删除表中 name 为 张三 的数据 $sql = 'DELETE FROM `student` WHERE `name`="张三"' ?>
改
-
修改语句
<?php # 更新一条 id 为 100 的数据中的 name 字段的值和 age 字段的值 $sql = 'UPDATE `student` SET `name`="张三", `age`=10 WHERE `id`=100' # 更新数据的时候让所有的数据增加一些内容 $sql = 'UPDATE `student` SET `age`=age+1' ?>
一次解析所有数据
$rows = mysqli_fetch_all($res,1);
if (count($rows) > 0) {
echo json_encode($rows,JSON_UNESCAPED_UNICODE);
} else {
echo '暂无数据';
}