H5第四阶段—PHP&MySQL
目录
PHP简介及基本语法... 3
PHP运行环境配置... 3
PHP的运行原理... 3
两种PHP运行方式... 4
变量的定义... 4
变量的传值... 4
变量数据类型... 5
变量检测... 7
变量类型转换... 7
常量... 8
代码的注释... 8
PHP输出方式... 8
单引号和双引号... 8
SESSION和COOKIE. 9
表单处理... 9
流程控制... 10
函数... 10
文件读写操作... 10
文件上传... 11
面向对象编程... 12
数据库操作:数据库及表的创建... 15
数据库操作:PHP链接数据库并操作数据... 16
数据库常用SQL语句... 16
数据修改业务逻辑... 19
数据库基础概念... 19
MySQL数据库命令行操作... 19
修改MySQL配置文件my.ini: 22
常见错误调试方法... 22
MVC的模式设计程序... 23
后续学习:... 23
笔记内容
PHP简介及基本语法
1) PHP,即“PHP: Hypertext Preprocessor”,中文名 “超文本预处理器” ,是一种被广泛应用的开源脚本语言;
2) 后缀必须是*.php;
3) PHP的语句以分号(;)结束的;
4) 可嵌入到HTML中,非常适用于Web领域开发;
5) 第一个PHP:
<?php
header('Content-type:text/html;charset="UTF-8"');
echo '我的第一个PHP';
?>
6) 通过虚拟路径访问PHP文件;
PHP运行环境配置
根据个人环境选择不同版本,参考安装文档进行安装配置;
PHP的运行原理
最终解析成:
访问php页面是看不到PHP代码的;
两种PHP运行方式
1) 通过虚拟路径访问,也就是URL地址:单线程;
2) CLI运行方式:真正的多线程
变量的定义
1) 以$开头,$后面不能直接跟数字,后面跟字母、数字、下划线;
2) 变量名称区分大小写,PHP关键词不区分大小写;
变量的传值
1) 赋值传值:
$h = 120;
$q = $h; //将$h的值拷贝给$q
$h = 135;
echo $h; //输出135
2) 引用传值:
$h = 155;
$q = &$h; //引用传值,表示$h的地址传给$q
$q = 195;
echo $h; //输出195
3) 可变变量
$a1 = array('username' => '邓海涛', 'passwd'=>'123456', 'tel'=>'15982369', 'email'=>'dxp@163.com');
foreach ($a1 as $key122 => $value134) {
${$key122} = $value134;
}
echo $email;
echo $tel;
变量数据类型
1) 整数:
a) 整型值可以使用十进制,十六进制,八进制或二进制表示;
b) 前面加上0b表示二进制;
c) 前面加上0表示八进制;
d) 前面加上0x表示十六进制;
e) 前面加上表示负数;
2) 浮点型:
a) 浮点型可以用来存储数字,也可以用来保存小数;
b) 提供了比整数大的多的精度;
3) 布尔型:
a) 布尔值有两个:true、false,不区分大小写;
b) 当做为判断条件或转成Boolean值时,以下值是false:
布尔值false、整型值0(零)、浮点型值0.0;
空字符串“”和字符串“0”、没有元素的数组;
没有任何成员变量的对象;特殊类型NULL;
4) 数组:
数组分索引数组和关联数组,用array定义一个数组,数组的元素可以是任意类型的值;如果数组的元素还是数组,那么该变量就是多维数组;
//PHP数组的定义
$array1 = array();
// $array1 = []; //用于7.0版本以后
//索引数组
$student = array('梁刚','郑鸿斌','易航','谭俊');//索引从0开始
$num = array(1, 2, 3, 4, 5);
//计算数组的元素个数:count();
$an = count($student);
echo $an;
//关联数组
$student1 = array('name'=>'赵梓茗', 'age'=>18, 'height'=>190.02);
//多维数组
$students = array(
0=>array('name'=>array('realname'=>'邓海涛', 'age'=>18, 'height'=>190),
1=>array('name'=>'邓海涛', 'age'=>18, 'height'=>190),
2=>array('name'=>'邓海涛', 'age'=>18, 'height'=>190),
);
var_dump($students);
5) 资源类型:数据库操作,文件操作
6) 对象类型:后面讲
7) NULL:NULL表示一个变量没值; NULL类型唯一值就是 NULL;
变量检测
1) is_array:是否是数组;
2) is_bool :是否是布尔型;
3) is_float :是否是浮点型;
4) is_int :是否是整数;
5) is_null :是否为 NULL;
6) is_numeric :是否为数字或数字字符串;
7) is_object :是否是一个对象;
8) is_resource :是否为资源类型;
9) is_string :是否是字符串;
10) Isset($a):检查变量是否设置;empty($a):检查变量的值是否为空;
变量类型转换
1) 转为布尔型:(bool)或(boolean);
2) 转为字符型:(string)或strval()函数;
3) 转为整型:(int)或intval()函数;
4) 转为浮点数:(float)或(double);
5) 转为数组:(array);
6) 转为对象:(object);
常量
1) 定义:define(name, value[, flag ]);flag:可选,设置常量名称是否大小写敏感;
2) 检查是否定义:defined ( string name ),参数name是常量名,如定义返回true;
代码的注释
1) //:单行注释;
2) /*里面是注水内容,多行*/;
3) #:单行注释;
PHP输出方式
1) Echo:输出字符串;
2) print_r() :打印变量的易于理解的信息;
3) var_dump():打印易于理解的完整数据信息及结构,包括字符串长度;
4) exit():打印并停止执行PHP脚本;
5) die():同exit;
单引号和双引号
1) 双引号里面的变量会解析,单引号不会解析;
2) 双引号里面的变量如果还要内容,最好用{}括起来;
3) 推荐使用单引号:运行效率稍微高点;
4) 如果输出单引号或者双引号,需要转义;
SESSION和COOKIE
1) SESSION:为每个访问者创建一个唯一 id ,并基于这个ID 来存储信息,Session_id()返回当前会话id;
2) 通过session_start() 启动session会话(必须位于 <html> 标签之前);
3) $_SESSION[‘username’] = ’用户账号’; 用于设置session值;
4) $_SESSION[‘username’] 用于获取session值;
5) unset() 用于释放指定的session变量;
6) session_destroy() 将重置所有session数据;
7) cookie 信息存储在用户电脑中,每当用户访问网页时同时会发送cookie ;
setcookie(name, value, expire); 用户设置cookie内容;
$_COOKIE[“user”]用于获取cookie的值;
setcookie(“user”, “”, time()-3600);用于删除cookie内容 ;
表单处理
1) Action指定后台处理的页面,method指定数据传输方式:
2) PHP如何接收POST过来的数据:
获取指定输入框的数据:
全部数据存放在一个数据里面的:
3) PHP接收GET过来的数据方式:$_GET[‘username’];
流程控制
数组一般使用foreach遍历:
$arrar1 = array(1, 56, -89, 120, 568, 1028, 56, 3);
$max = $arrar1[0];
foreach ($arrar1 as $key => $value) {
if($max < $value){
$max = $value;
}
}
echo $max;
函数
1) 函数是可重复使用的代码块,使程序结构清晰,易于维护。
2) 函数内部使用外部的变量使用global;
3) 函数分为自定义函数和内置函数;
function fn(参数1,参数2,参数3…) {
执行的代码;
Return 返回的数据,可以是数组、对象、字符串等
}
文件读写操作
1) 打开文件:$fh = fopen($filename, “打开模式”);打开模式描述如下表:
2) 读取打开的文件指定长度的内容:fread($fh, filesize($filename));
3) 读取文件单行内容:Fgets($fh);
一行一行读取文件所有内容:
while(!feof($fh)){
$str1 = fgets($fh);
}
4) 文件写入:
fwrite($fh, “访客1\tip:112.105.213.20\t时间:2017-03-06 16:42:21 " . PHP_EOL);
5) 关闭打开的文件:fclose($fh);
6) 一次性获取文件内容和写入文件的方式:
//读取远程文件内容
$str = file_get_contents('http://localhost/indexmk/preview.do');
var_dump($str);
//写入文件
file_put_contents('a.html', $str);
文件上传
1) 表单method必需为POST;
2) 指定表单enctype属性值为”multipart/form-data” :
enctype:encodetype,即编码类型;
multipart/form-data:表单数据由多部分构成,如文本、二进制数据文件等;
3) 指定input标签的type为file:
<input type=“file” name=“uploadfile” id=“uploadfile” />;
4) 使用$_FILES[‘uploadfile’]获取上传文件的相关信息;
5) move_uploaded_file() :将上传的文件从临时空间移动到你想保存的目录:
move_uploaded_file($_FILES["uploadfile"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
面向对象编程
1) 面向对象编程简称OOP( Object-oriented programming );
2) 类是具有相同属性和服务的一组对象的集合;
3) 对象是类的实例;
4) 如何定义一个类:
class Person
{
//类的属性
public $name;
//构造函数,对类和属性进行初始化
function __construct($name1, $age1){
$this->name = $name1;
}
}
5) 实例化一个对象
$person1 = new Person('鲁老师', 170);
//调用对象的属性
echo $person1->name;
6) 成员变量
类中的变量,也称为属性。成员变量用来保存信息数据,或与成员方法进行交互来实现某项功能。
定义成员变量的格式为:关键字 成员变量名。
访问成员变量和访问成员方法是一样的。只要把成员方法换成成员变量即可,格式为:
对象名 -> 成员变量
7) 成员方法
类中的函数被称为成员方法。
函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。
class Student{
//学生的名字
var $name;
function setName($name){
//把局部变量给当前对象的全局变量赋值
$this->name = $name;
}
function getName(){
//返回当前对象全局变量$name
return $this->name;
}
}
8) PHP 构造函数
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值;
function __construct( $name, $age )
{
$this->name = $name;
$this->age= $age;
}
9) 析构函数
析构方法的作用和构造方法正好相反,对象生命周期结束时调用;
function __destruct( $name, $age )
{
echo $this->name;
echo $this->age;
}
10) 类的继承
PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承
class ChildClass extends ParentClass {
// 代码部分
}
11) 访问控制
– public(公共成员)
可以公开的、没有必要隐藏的数据信息。可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员;
– private(私有成员)
被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问。在子类中也不可以;
– protected(保护成员)
被protected修饰的类成员,可以在本类和子类中被调用,其他地方则不可以被调用;
12) static: 声明类属性或方法为 static(静态),可以不实例化类而直接访问;
13) Final 关键字
a) 如果父类中的方法被声明为 final,则子类无法覆盖该方法;
b) 如果一个类被声明为 final,则不能被继承;
14) 调用父类构造方法: parent::__construct();
15) 自动加载类 __autoload()函数:
function __autoload($classname) {
require_once $classname . '.php';
}
// MyClass1类不存在时,自动调用__autoload()函数,传入参数”MyClass1”
$obj = new MyClass1();
数据库操作:数据库及表的创建
1) 到phpmyadmin管理数据库,访问:http://localhost/phpmyadmin/
输入账号root,密码默认为空,不输入
2) 创建需要的数据库:
3) 数据库创建好后,进入数据库,创建存储数据的表:
数据库操作:PHP链接数据库并操作数据
1) 建立数据库连接:
2) 设置数据库字符编码,防止乱码:
3) 执行SQL语句:
4) 使用完成后关闭数据库连接:
数据库常用SQL语句
1) 添加数据:
2) 查询数据:
3) 删除数据:
4) 更新数据:
5) 查询排序使用ORDER BY:
UTF8编码下的中文排序处理:
6) 多表查询:左连接LEFT JOIN,右连接RIGHT JOIN,内连接INNER JOIN
班级表 和 学生表:
LEFT JOIN:
查询结果:
描述:所有students(左边的表)信息,class(右侧表)的值可以为NULL;
RIGHT JOIN:
查询结果:
描述:所有class(右侧表)信息,students(左边的表)的值可以为NULL;
INNER JOIN:
查询结果:
描述:class 和 student 的值都不能为NULL;
7) WHERE更多判断条件:
数据修改业务逻辑
1) 首先获取数据原始信息,展示在页面上;
2) 把对应的input输入框的value值设置为数据库获取到的原始信息;
3) 修改信息需要传递而不需要展示给用户的,如主键id,使用type为hidden的input来传递;
4) 整个需要修改的数据需要放在一个表单中,包括hidden值;
5) 修改完成后提交给PHP,PHP根据获取的数据设置对应字段的新值及判断条件的值,执行UPDATE语句;
数据库基础概念
1) 数据库服务器:安装了数据库管理系统软件的计算机叫数据库服务器;
2) 数据库管理系统:简称DBMS(Database Management System),是用来管理数据库的软件;
3) 数据库:数据库(Database)是用来存储和管理数据的仓库;
4) 数据表:数据库中存放数据的地方,一个数据库中可包含若干个数据表;
5) 记录:表中的行叫记录,通常用它所在的行数(id值)表示这是第几条记录;
6) 字段:一条记录由多列构成,每个列称为字段;
7) 数据:存放在表行列交叉处的值就叫数据;
MySQL数据库命令行操作
1) 为了操作方便先修改环境变量:
2) 登录到数据库:mysql –h主机名 –u用户名 –p 回车,然后输入密码;
3) 退出MySQL:exit或quit
4) 在MySQL客户端,使用set修改密码:
set password = password(‘新密码’);
5) 创建数据库:
create database [if not exists] dbname [charset 字符集]
通常使用的字符编码是utf8,我们可以通过修改配置文件来设置默认的字符编码,这样在创建数据库和表的时候就可以不用去选择utf8 的编码;
6) 使用指定的数据库:
use databasename;
7) 显示数据库中的表:
show tables;
8) 显示所有数据库:
show databases;
9) 删除指定的数据库:
drop databse dbname;
10) 数据库信息存在data目录下:
11) 表信息由三部分组成:
修改MySQL配置文件my.ini:
常见错误调试方法
MVC的模式设计程序
后续学习:
- 完善项目;
- 看PHP手册;
- 看笔记;