第一章 PHP快速入门
一、什么是PHP
PHP是一种服务器端脚本语言,在一个HTML页面中可以嵌入php代码,这些代码在每次页面被访问时执行,PHP代码将在服务器中被解释生
二、什么是MySQL
MySQL是一个快速而又健壮的关系数据库管理系统,一个数据库将允许你高效地存储、搜索、排序和检索数据,
MySQL服务器控制对数据的访问,而确保多个用户可以并发使用,
三、PHP标记
PHP代码是以"<? php"开始,"?>"为结束,可以告诉web服务器php代码的开始和结束,可以隔离php代码和HTML代码.
四种标记风格,推荐使用第一种
1、xml风格
<?php echo '<p>order process</p>'; ?>:服务器管理员不能禁用这种标记。
2、简短风格
<? echo '<p>order process</p>'; ?>:
3、SCRIPT风格
<script language='php'>echo '<p></p>';</script>
4、asp风格
<% echo '<p></p>'; %>
四、注释
/* .... */
五、添加动态的内容
<?php
echo "<p>order processed at";
echo date('H:i, JS F Y');
echo "</p>";
?>
可以使用连接符"。"将其写在一行中.
<?php
echo "<p>order processed".date("H:i JS F Y")."</p>";
?>
六、访问表单变量
php可以用变量的形式访问表单域,其中变量名必须与表单域的名称一致,3种方法来访问
php的变量声明:$名称,$tireqty
$_POST['表单name']
$_GET['表单name']
七、字符串的链接
使用" . "来链接字符
echo $tireqty. "tires<br>";
八、PHP的数据类型
1、int:整数 2、float:浮点 3、string:字符串 4、boolean:布尔 5、array:数组 6、object:对象
7、NULL:空 8、resource:资源(存储如图片,文件)
九、类型的转换
$totalqty = 0;
$totalmount = (float)$totalqty; // 将整型转换成浮动类型
十、变量、常量
$trieqty:一个变量的声明,$+name // 一般系统定义的变量名以下划线开头如$_POST
可变变量:
$aa = "bb";
$bb = "aa";
ehco $$bb; // 输出bb
define("TIREPRIC', 100):常量的声明
十一、操作符
1、算术操作符:+、-、*、/、%
2、比较操作符:==、=、===、!=、!==、<>、>、<、<=、>=
3、逻辑操作符:!、&&、 ||、
and、or、xor 与!、&&、 ||、相同就是优先级较低
4、类型操作符:instanceof
calss sampleClass();
$myObject = new sampleClass();
if($myObject instanceof sampleClass){
// 如果对象myobject是sampleClass类的对象返回真
}
十二、number_format():获取小数点后几位
$num = 1230.0234
echo number_format($num, 2) // 输出1230.02;
第二章 数据的存储与检索
一、保存数据
存储数据有两种基本方法:1、保存到普通文件 2、保存到数据库中
二、文件处理
数据写入文件步骤:1、打开这个文件,如果不存在先创建 2、将数据写入这个文件 3、关闭这个文件
从文件中读数据步聚:1、打开文件 2、从文件中读出数据 3、关闭这个文件
1、打开文件fopen()函数
$fp = fopen("$DOCUMENT_ROOT/orders.txt", "w");
2、选择文件模式
打开一个文件有以下3种选择
a、打开文件为只读、只写或者读和写
b、如果要写一个文件,你希望覆盖所有的文件内容
c、如果希望在一个区分了二进制方式和纯文本的系统上写一个文件
第三章 使用数组
一、创建数组
1、创建一
1 $arr = array("tires", "oli", "spank"); 2 $len = count($arr); 3 4 echo $len; 5 6 for($i=0; $i<$len; $i++){ 7 echo $arr[$i]."<br>"; 8 }
2、创建二
1 $arr = array("tires"=>100, "oli"=>10, "spank"=>"name"); 2 3 foreach($arr as $value){ 4 echo $value."<br>"; // 获取值 5 } 6 7 $arr = array("tires"=>100, "oli"=>10, "spank"=>"name"); 8 9 foreach($arr as $i => $value){ 10 echo $i."<br>"; // 获取键 11 }
3、创建多维数组
1 $arr = array(array("111", "2222", "333"), array("aaa", "bbb", "ccc")); 2 $len = count($arr); 3 4 for($i=0;$i<$len;$i++){ 5 for($k=0;$k<$nLen=count($arr[$i]);$k++){ 6 echo $arr[$i][$k]."<br>"; 7 } 8 }
第五章 代码重用与函数编写
一、使用require()和include()函数
可以将一个文件载入到php脚本中,这个文件包含在脚本中输入的内容,其中包括php语句、文本、html标记、php函数或php类.
require()与include()基本相同,区别在于函数失败后,require()函数将给一个致命错误,而include()只是给出一个警告
第六章 面向对象编程
一、类的定义和属性、方法
1 class showName { 2 var $name = "aaaa"; 3 function sayName(){ 4 echo $this->name; 5 } 6 } 7 8 调用: 9 10 include("showName.php"); 11 12 $getName = new showName; 13 14 echo $getName->sayName();
二、访问修饰符
1、public:公用
2、private:私有
3、protected:声明的属性和方法在类外部调用是不可以的,但可以在继承中使用
三、构造函数
构造函数,当创建一个对象时,它将自动调用构造函数,有初始化的作用。__construct
1 class showName { 2 var $name = "哈哈调用到了"; 3 function __construct (){ 4 return $this->name; 5 } 6 }
四、析构函数
析构函数,在销毁一个类之前执行一些操作或完成一些功能,
一个类的析构函数的定义必须是,__destruct();
1 class className{ 2 var $name = "siguang"; 3 function __construct($param){ 4 echo "parameter:".$param; 5 } 6 7 Function __destruct(){ 8 echo $this->name."再见!<br>"; 9 } 10 } 11 12 $aa = new className("aaa");
五、实例化一个参数的对象
1 class className{ 2 function __construct($param){ 3 echo "parameter:".$param; 4 } 5 } 6 7 $aa = new className("aaa");
六、使用类的属性
在一个类中可以访问一个特殊的指针-$this,如果访问属性是$attribute时可以$this->attribute来引用
从外部访问属性
七、继承
使用关键字“extends”
class B extends A{
// B继承了A 类
}
例:
1 class ClassA{ 2 var $name = "aa"; 3 function getName(){ 4 echo $this->name; 5 } 6 7 function __set($name, $value){ 8 if($name === "name"){ 9 $this->name = $value; 10 } 11 } 12 } 13 14 class ClassB extends ClassA{ 15 var $your = "siguang"; 16 function showName(){ 17 echo $this->name."<br>"; 18 echo $this->your; 19 } 20 } 21 22 $ObjB = new ClassB; 23 $ObjB->showName();
八、继承使用private和protected访问修饰符控制可见性
Private和protected访问修饰符来控制需要继承的内容,如果一个属性或方法被指定为private它将不能被继承,如果被指定为protected,它将在类外部不可见,但可以在继承中
1 class ClassA{ 2 private $name = "siguang"; 3 protected $age = "30"; 4 } 5 6 class ClassB extends ClassA{ 7 function showInfo(){ 8 echo $this->name.",".$this->age; 9 } 10 } 11 12 $getClass = new ClassB(); 13 $getClass->showInfo(); // 只能输出 30,$name为私有
九、重载
十、PHP的面向对象高级功能
1、使用Per-Class常量
class Math{
const pi = 3.1415926; // 定义常量
}
Echo Math::pi // 调用常量的方法使用::
2、实现静态方法
使用static来声明,静态方法就是在没new出对象的时候就可以直接调用的方法,
使用::来调用
class Math{
public $name = "aa";
const pi = 3.1415;
static function squared($inp){
return $inp * $inp;
}
}
// 调用
$getVal = Math::squared(10);
echo $getVal;
3、检测类的类型和类型提示
使用instanceof关键字允许检查一个对象的类型
($b instanceof B) 返回true或false;
4、克隆对象
$c = clone $b; // 将创建的b对象复制赋给c一份
十一、实现迭代器
第八章 web数据库
一、关系数据库的概念
1、表格:关系数据库由关系组成,这些关系 通常称为表格,一个表格就是一个表。
2、列、行、值:
3、键、外键:标志表中的一列称为主健,在其它表中也出现相同的主键,称为外键。
4、模式:数据库整套表格的完整设计称为数据库的模式,一个模式应该显示表格及表格的列、每个表的主键和外键
5、关系:外键表示两个表格数据的关系,
四、php语句:
1、echo:将字符串打印到浏览器中.
第九章 MySQL 数据库
一、了解MySQL数据库管理系统
1、基于数据库的PHP:系统可以管理用户、栏目、图片、文章、评论都存储在数据库中
2、MySQL的架构:C/S 服务器的端口3306
3、PHP程序员需要学习哪些数据库操作:
DBA:数据库管理员
PHP程序员:1、为项目设计表 2、使用SQL语句
4、MySQL安装和启动:Linux和window的安装 和php的整合
二、MySQL的结构:
1、my.ini是MySQL的配置文件
2、data:所有数据库的目录,每个库都有创建的表
3、bin:MySQL所有命令目录
三、集成环境AppServ和APMServer
1、APMServer:可以开启服务器直接使用,是图形化的集成环境
2、AppServ:开启Apach需要在window系统开始/程序/cont..../Apach start开启或停止
四、启动MySQL
1、在开始/程序中启动
2、在window服务中启动
3、在命令行启动net start mysql 关闭 net stop mysql
4、查看MySQL是否是启动状态:命令 service mysql status
5、开启MySQL服务:service mysql start
6、停止MySQL服务:service mysql stop
五、MySQL数据库操作
mysql在window环境变量下
命令行下的操作:
1、连接数据库:mysql -h 服务器地址(localhost)-u root -p
2、关闭数据库:exit
3、查看数据库状态:s
4、查看配置文件中所有的变量:show variables
-> ;
5、查看目录下所有的库:show databases;
6、创建数据库:create database rrgamedb;
7、删除数据库:drop database rrgamedb;
8、创建表:create table 指定库.新建表名(字段 id int, name char(30), age int);
create table if exists tableName(id int, name char(10), age int, info char(100)); // if exists 如果表存在就不用在执行,创建库也需要这样
这时库里会多出三个文件1、user.frm:保存表结构 2、user.MYD:保存索引 3、user.MYI:记录内容
9、选择默认数据库: use 数据库 就会切换到哪个库做为默认的库,之后对操作表就可以不用加库的名
10、查看库中的所有表:在先选择默认库后,show tables;
11、查看表中的内容:desc user(表名);
12、向表内插入数据:insert into user values("1", "siguang", "30");
插入指定字段,而不是全部需要在表的后面来指定字段
insert into user(name, age) values("haha", "20"); // 插入指定字段
13、查询表的内容:select * from user(表); // 查询表的所有内容
select * from user where id="20"; // 查看user表条件是id=20
14、查看表的结构:desc tableName;
15、更新和修改表内容:
update 表名 set name="siguang.liu",age="30" where id="2" AND set ="男"; // 查询user表将条件是id=2和set=男的条件,name字段等于siguang.liu,
16、删除表的内容:
delete from 表名;
delete form 表名 where id="2"; // 删除user表中的id=2的名段
17、给数据库加密码:mysqladmin -u root -p 回车,在输入password
其它关键字的意思:
1、NOT NULL:表中所有行的属性必须有一个值,如果没有指定可以为NULL;
2、AUTO_INCREMENT:在整数中使用,可以自动产生一个唯一的标识比现存的值更大,每个表中只有一个这样的值;
3、PRIMARY KEY:列为主键,本列中输入必须是唯一,AUTO_INCREMENT,主键的自动索引功能将管理
例:create table soso(id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name char, age int);
-------------------------------------------------------------------------------------------------
1、DDL
// 创建库、表
create database 库名
create table 库名.表名 use 库名
// 删除库、表
drop database 库名
drop table 表名
2、DML
// 插入内容或指定字段插入内容
inser into user values("1", "lulu", "hahha");
inser into user("id", "name") values("2", "siguang");
// 更新
update user set name="aaaa" where id="1"; // 将user表中条件是id等于1的字段,将name修改成aaaa
// 删除
delete form user where id="2"; // 将id等于2的字段删除
3、DQL
// 查询表
select * form user;
4、DCL
s 看状态
show databases; 查看所有库
show tables; 查看所有表
desc user; 查看表结构
show variables 查看配置文件的变量名
第十章 使用PHP从web访问MySQL数据库
一、php访问MySQL数据库的两种方法:
有两种方法一个是php4之间的面向过程的,另一种是php5之后支持的面向对象的方式,使用mysqli类。
1、面向对象访问mysqli
2、面向过程
第二十三章 在PHP中使用会话控制
一、什么是会话控制
会话控制的思想是指能够在网站中根据一个会话跟踪用户,可以使用cookie和session,$_SESSION超级全局变量
会话的基本步骤:
1、开始会话
2、注册会话变量
3、使用会话变量
4、注销变量并销毁会话
二、cookie
cookie就是一小段信息,它由脚本在客户端机器保存,
通过php设置cookie:使用setcookie()函数来手动设置cookie,可以通过全局$_COOKIE来实现
PHP存储和获取cookie :
1 // setcookie之前不允许有任何输出 2 3 // 存储cookie 4 setcookie("siguang", "liusiguang1983", time()+3600); 5 6 // 获取cookie 7 $getCookie = $_COOKIE["siguang"]; 8 9 // 删除cookie 10 setcookie("siguang"); 11 12 echo $getCookie;
三、session会话
有cookie了为什么还要用session来跟踪用户信息呢,因为cookie存在客户端的文件中,session是服务器端保存的信息
保存session的两种方法:1、存储到cookie中 2、通过url将session ID 带到下一个页面
服务器向客户端发数据:先是状态、头信息然后在是内容