一、WEB相关概念
服务器:没有显示器的主机,配置比普通电脑高、24小时开机
web服务器:是个软件,开启之后你就可以通过浏览器访问磁盘目录下的文件
ip地址:是电脑的唯一编号不重复,每个人都有一个特殊的127.0.0.1 localhost
域名:因为ip不方便记忆
DNS服务器:保存域名和ip对应关系的文件
端口号:为了确定每次访问交给计算机哪个软件处理
web访问流程
普通用户:打开浏览器 输入网址 直接看到内容 专业开发:打开浏览器 输入网址 -> 交给DNS服务器(存放ip和域名关系)-> 找到ip加80访问这台电脑 html、css、js就直接返回 -> 浏览器解析输出 php -> 交给php软件 php软件返回html -> 交给浏览器输出
二、PHP相关概念
JS:基于客户端的语言
PHP概念:基于服务端的语言
PHP/JAVA作用:写接口、开发动态网站
PHP优点:开发速度快,成本低
PHP运行环境:WAMP、LAMP
WAMP架构
LAMP 架构
三、搭建PHP运行环境
步骤1:搭建PHP运行环境
双击PHPstudy这个软件
直接选择目录安装就行(路径不能有中文或空格)
步骤2:创建项目(一台电脑 搭建好环境,可以创建n个项目)
a. 搞一个网址 1. 打开PHPstudy选择其他选项菜单->最终打开host (规则 先写IP地址统一127.0.0.1 在写网址) 2. 检测是否成 在DOS窗口(ctrl+r 输入cmd 输入命令 ping 网址 如果看到127.0.0.1 b. 项目目录 1. 打开PHPstudy选择其他选项菜单 -> 打开配置文件 -> vhosts-ini文件 输入下述内容(固定) <VirtualHost _default_:80> ServerName 网址(改1 ok) DocumentRoot "项目存放目录(改2 待创建)" <Directory "项目存放目录(改3 待创建)"> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> 2. 创建项目存放目录 3. 重启服务
四、PHP语法快速入门
创建php文件:文件名.php
创建php变量:$变量名 = 变量值;
php判断:同js
php循环:同js
while、for、dowhile 同js js : 数组.forEach((item, index) => {}) php : foreach($数组 as $index => $item) {}
php函数:同js 唯一的区别 变量名加$
打印:echo $变量名,复杂类型 print_r($变量名 )
<?php
// 定义变量
$uname = "神龙教主";
echo $uname;
echo "<hr />";
// 定义数组
$arr = ["a", "b", "c"];
echo $arr[0];
echo "<hr />";
// 遍历输出
foreach($arr as $index => $item) {
echo $index;
echo $item;
echo "<br />";
}
// 定义函数调用
function fn() {
echo "老铁双击666,下次再迟到你就别来了";
}
fn();
// 定义变量成绩,判断成绩是否优秀 > 90
echo "<hr />";
$score = 99;
if ($score > 90) {
echo "优秀";
} else {
echo "有瑕疵";
}
?>
五、MySQL数据库
简介
数据库是什么:就是一个软件
数据库能干吗:永久存放网站数据
安装
不需要安装 因为PHPstudy帮我们装好了
使用 - 软件navicat
navicat是一个mysql数据库可视化管理软件
作用:实现mysql数据库数据增删改查
安装:绿色版 解压双击打开直接用
密码:root、我的admin888
创建仓库-数据库
增删改查
使用 - 命令
增: insert into 表名 (列名,…,列名) values (数据,…,数据 )
删: delete from 表名 where id=1 或者 uname = "张珊"
改: update 表名 set 列名=值,…,列名=值 where 条件
查: select * from 表名
分页:select * from 表名 order by id asc/desc limit 起始位置, 要查询条数
起始位置 = (当前页 -1 ) * 每页显示条数
-- 分页:select * from 表名 order by id asc/desc limit 起始位置, 要查询条数 -- -- 起始位置 = (当前页 -1 ) * 每页显示条数 -- -- 每页2条 查询第一页数据 -- 12 34 56 78 -- select * from users order by id asc limit 0,2 -- select * from users order by id asc limit 2,2 -- select * from users order by id asc limit 4,2
六、使用PHP操作MySQL
- 连接MySQL
$pdo = new PDO('mysql:dbname=数据库名', '账号', '密码');
- 查
$pdoStatement = $pdo->query(SQL语句);
// 返回一维数组
$data = $pdoStatement->fetch(PDO::FETCH_ASSOC);
// 返回二维数组
$datas = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
- 增删改
$rs = $pdo->exec(SQL语句); // 返回受影响的函数 0-假,数字-真
注:SQL语句就是写数据库增删改查的命令
练习
需求1:用php查找数据库中数据
先用navicat创建一张表
<?php
header("content-type:text/html;charset=utf-8");
$pdo = new PDO('mysql:dbname=stus', 'root', 'root'); //连接数据库
$pdoStatement = $pdo->query("select * from students"); //操作数据库
$data = $pdoStatement->fetch(PDO::FETCH_ASSOC); 返回一维数组
print_r($data); //打印出数据库查找出的数据
echo "</br>";
echo $data['id']; //按表字段打印数据
echo $data['username'];
echo $data['pwd'];
?>
查询结果如下
<?php
header("content-type:text/html;charset=utf-8");
$pdo = new PDO('mysql:dbname=stus', 'root', 'root'); //连接数据库
$pdoStatement = $pdo->query("select * from students"); //操作数据库
$datas = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);//返回二维数组
echo "<pre>"; //让数据格式好看点,不会在一行显示
// print_r($datas);
foreach($datas as $index => $key) { //循环遍历
print_r($key); //打印出数据
}
?>
返回二维数组显示如下
需求2:往数据库插入数据
<?php
header("content-type:text/html;charset=utf-8");
$pdo = new PDO('mysql:dbname=stus', 'root', 'root');//连接数据库
// 列表 切记不能加引号
// 值 必须加引号
$rs = $pdo->exec("insert into students (username,pwd,gender) values ('郝书涛', '123456','男')"); //运用sql语句往数据库插入数据
// 返回受影响的函数 0-假,数字-真
//
echo $rs;//打印出响应数据
?>
结果如下
php写接口
概念
接口是什么:就是一个文件、可以是js/php/json等等 只要返回json数据 (相当于咱们前端js里面对象 大括号
接口能干吗:1数据角度-让你网站的数据动态、2功能角度 - 手机短信、笑话接口等等
接口去哪下:1-百度第三方接口网站,2-自己写
后端响应状态接口
<?php echo json_encode([ "meta" => [ "state" => 200/201/301/302/400/401/403/404/500, "msg" => 提示信息 ], "data" => 查询放数据库数据/增删改直接写null ]); ?>
查询接口
<?php $pdo = new PDO('mysql:dbname=数据库名', '连接数据库的用户名', '密码'); $pdoStatement = $pdo->query("select * from 表名"); $datas = $pdoStatement->fetchAll(PDO::FETCH_ASSOC); //返回二维数组 echo json_encode([ "meta" => [ "state" => 200, "msg" => "操作成功" ], "data" => $datas ]); ?>
删除接口
<?php $pdo = new PDO('mysql:dbname=web02', 'root', 'admin888'); $rs = $pdo->exec("delete from users where id = 1"); if ($rs) { echo json_encode([ "meta" => [ "state" => 200, "msg" => "删除成功" ], "data" => null ]); } else { echo json_encode([ "meta" => [ "state" => 500, "msg" => "删除失败" ], "data" => null ]); } ?>