一、PHP运行及开发环境
LAMP/WAMP
Linux + Apache + MySQL + PHP //专业后端PHP需要的环境
Window + ……
Apache
一台安装有Apache的电脑主机就是一台网络服务器,负责处理客户端请求的数据,并返回客户请求的内容。
二、PHP基础语法
PHP里的测试命令 var_dump() 相当于console.log()
使用PHP输出HTML
1.不带格式的HTML
<?php
//echo 后面的内容是响应给浏览器的
echo "hello PHP";
?>
2.带格式的HTML
<?php
echo "<h1>hello PHP</h1>";
?>
3.使用定界符显示HTML(<<<EOD EOD)
<?php
//结构比较复杂的情况
$str = <<<AAA
<h1>标题</h1>
<p>段落</p>
AAA;// 注意顶格写
echo $str;
?>
4.把PHP嵌入HTML //结构很乱已经很少这样写了
<body>
<ul>
<?php
//访问数据库 得到数据
echo "<li>11111</li>";
?>
</ul>
<script>
alert("bbb");
</script>
</body>
5.PHP注释 // /**/
三、PHP数据类型
1.布尔值(true TRUE var_dump())
<?php
$flag1 = true;
$flag2 = FALSE;
?>
2.整型(integer)
<?php
$num1 = 10;
?>
3.浮点型(float)
<?php
$num2 = 10.1;
var_dump($num2);
?>
4.字符串(string)
<?php
$str1 = "abc";
?>
5.数组(array)
$arr1 = [1,2,3];//在低版本的PHP中这种写法是会报错的,$arr = array(1,2,3);
var_dump($arr1);
6.对象(object)
<?php
class Person{
}
$person = new Person();
var_dump($person);
?>
预定义变量
1.服务器变量$_SERVER,保存头信息,路径,脚本位置等的数组
var_dump($_SERVER);//和服务器相关的一些信息,值为数组
echo $_SERVER["HTTP_HOST"];//访问方式,和js里对象的属性值的取值方式一样
2.Cookie变量$_COOKIE,保存cookie值的数组
cookie 本地存储数据的一种方式 和localStorage相似,区别明天再讲
var_dump($_COOKIE);//取到浏览器端存的cookie信息
3.HTTP GET变量$_GET,保存url请求和表单get提交的变量的数组
$_GET 获取前端通过get请求附加的数据
4.HTTP POST变量$_POST,保存post方法生成的变量的数组
$_POST 获取前端通过post请求附加的数据
5.Request变量$_REQUEST
$_REQUEST 获取前端通过get/post请求附加的数据
四、数组的创建
1.不带索引的数组 默认索引 0 1 2 3 ……
$arr1 = [1,2,3]; //索引0 1 2 值 1 2 3
2.带索引的数组
自定义索引 类似于js里对象的表示形式 {name:“john”,age:20} key=>value
$arr2 = ["name"=>"john","age"=>20];
var_dump($arr2);//不能用echo输出一个数组
3.二维数组
$arr3 = [[1,2],[3,4]];
4.使用变量创建数组compact() a = “ a a a ” ; a = “aaa”; a=“aaa”;b = “bbb”; $c=array(1,2); compact(“a”,”b”,”c”);
1.“a”,”b”,”c”在结果中对应key值
$a = 1;
$b = 2;
$c = 3;
$arr4 = compact("a","b","c");//abc对应的变量名
var_dump($arr4);
5.使用两个数组创建一个数组 a = a r r a y ( 1 , 2 , 3 ) ; a=array(1,2,3); a=array(1,2,3);b=array(“a”,”b”,”c”); array_combine( a , a, a,b);
1.$a的值为key,$b的值为value
$a = [1,2,3];
$b = ["a","b","c"];
$arr5 = array_combine($a,$b);
var_dump($arr5);
建立指定范围单元的数组range(start,end,step)
$arr6 = range(1,10,2);
var_dump($arr6);
五、数组的方法
1.in_array( v a l , val, val,arr) 判断数组中是否包含某个值,返回布尔值
<?php
$arr1 = [1,2,3,1,2,1];
var_dump(in_array(1,$arr1));//true
?>
2.取得键名和键值 array_keys( a r r ) a r r a y v a l u e s ( arr) array_values( arr)arrayvalues(arr)
var_dump(array_keys($arr1));
3.移除数组中重复的值,返回去重之后的数组 array_unique($arr)
var_dump(array_unique($arr1));
4.list( a , a, a,b) = $arr;把数组中的值赋给指定的变量
list($a,$b) = $arr1;
echo $a;//1
echo $b;//2
5.foreach($arr as $val) 遍历数组
PHP里字符串的拼接用 .
6.计算数组的长度 count($arr)
foreach($arr1 as $val){
echo $val."<br>";//PHP里字符串的拼接用.
}
for($i = 0; $i < count($arr1); $i++){//使用方法跟js里相似
echo $arr1[$i]."<br>";
}
if(true){
echo "aa";
}
function foo(){
echo "bb";
}
foo();
7.添加删除 array_push( a r r , 1 , 2 ) a r r a y p o p ( arr,1,2) array_pop( arr,1,2)arraypop(arr)
array_push($arr1,11);
var_dump($arr1);
8.统计数组中所有的值出现的次数array_count_values($arr)
var_dump(array_count_values($arr1));
六、PHP与JSON
1.isset($a)判断一个变量是否定义
和接口(后台页面)数据相关的两个重要的方法 json_encode() json_decode()
2.json_encode($val) 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE。json_encode($students,JSON_UNESCAPED_UNICODE)
将这个数据转换成js能识别的数据结构(json格式的字符串)
$arr1 = ["xwy","ljh","lcl"];
$arr1 = [["name"=>"john","age"=>20],["name"=>"dale","age"=>21]];
json_encode(data) data是php这门后台语言提供的数据,将这个数据转换成js能识别的数据结构(json格式的字符串),并且能通过echo输出
$json = json_encode($arr1);
echo $json;
3.json_decode($val,true) 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。True表示转换成数组,false转换成对象。
将json格式的字符串转成php能识别的数据
将json格式的字符串转成php能识别的数据
$str = '{"name":"john","age":20}';
var_dump(json_decode($str,true));//["name"=>"john","age"=>20]
var_dump(json_decode($str,false));
七、利用PHP操作数据库
数据库的概念
数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库,可以被视为能够进行自动查询和修改的数据集。
数据结构是指相互之间具有一种或多种特定关系的数据元素的集合。
结构化数据和传统数据的区别
结构化数据是指能够用二维表结构来逻辑表达实现的数据,即行数据。
传统数据是指不方便用数据库逻辑二维表来表现的数据,比如word文档,图片,视频,html,报表等。
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,由二维表及其之间的联系所组成的一个数据组织。DB2,Oracle,SQL Server,MySQL
结构化查询语言(Structured Query Language)
Sql是用于访问和处理数据库的标准计算机语言
数据增删改查
基本顺序:Server(服务器) -> Database(数据库) ->Table(表) -> Row(行) -> Column(列)
1.创建数据库 create database dbname;
2.创建数据表 use dbname; create table tbname(colName type not null default 0);
3.增加字段 alter table tbname add colName type;
4.修改字段 alter table tbname change oldColName newColName type;
5.删除字段 alter table tbname drop colName;
增加记录 insert into tbname (colName1,colName2) values(val1,val2);
删除记录 delete from tbname[ where colName = value];
修改记录 update tbname set colName = value;
查找记录 select * form tbName [ where colName = value];
主键:能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键。
1.连接数据库服务器
<?php
$conn = new mysqli("localhost","root","");
if($conn->connect_error){
die("数据库连接失败".$conn->connect_error);//输出并结束
}
echo "连接成功";
?>
2.创建数据库
<?php
include "conn.php";//使用include引入别的PHP页面
//创建数据库 使用SQL语句
$sql = "create database myDB";
//执行SQL
//$conn->query($sql);//执行成功的话,返回true
if($conn->query($sql)){
echo "数据库创建成功";
}else{
echo "数据库创建失败".$conn->error;
}
?>
3.创建数据表
<?php
include "conn.php";
//创建表 之前需要先选择数据库
$conn->select_db("mydb");//选择数据库
//创建表的同时要设置字段
$sql = "create TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
if($conn->query($sql)){
echo "数据表创建成功";
}else{
echo "数据表创建失败".$conn->error;
}
?>
4.插入数据
<?php
include "conn.php";
//创建表 之前需要先选择数据库
$conn->select_db("mydb");
//一次插入一条信息
$sql = "insert into myguests (firstname,lastname,email) values ('zhang','biao','zb@163.com')";
//一次插入多条信息
$sql = "insert into myguests (firstname,lastname,email) values ('zhang','san','zs@163.com'),('lee','si','ls@163.com')";
$conn->query($sql);
?>
5.查找数据
<?php
include "conn.php";
//创建表 之前需要先选择数据库
$conn->select_db("mydb");
$sql = "select * from myguests";//选择所有的数据的详细信息
$sql = "select id,firstname from myguests";//选择所有的数据的部分信息
$sql = "select * from myguests where id > 2";//选择部分的数据的详细信息
$sql = "select * from myguests order by id desc";//按照id值的降序(从大到小)取出数据
$result = $conn->query($sql);//将取到的数据放到$result
$newArr = [];
if($result->num_rows){
while($row=$result->fetch_assoc()){
array_push($newArr,$row);
}
}
//[["id"=>1,"firstname"=>""],[],[],[]]
$json = json_encode($newArr);
echo $json;
?>
6.修改数据
<?php
include "conn.php";
//创建表 之前需要先选择数据库
$conn->select_db("mydb");
$sql = "update myguests set firstname='zhao' where id = 1";
$conn->query($sql);
?>
7.删除数据
<?php
include "conn.php";
//创建表 之前需要先选择数据库
$conn->select_db("mydb");
$sql = "delete from myguests where id = 1";
$conn->query($sql);
?>
···