第二周学习笔记

目录

一.SQL 简介:用于访问和处理数据库的标准的计算机语言

1)是什么:

2)能干啥:(对数据库进行增删查改操作)

(特别提醒)要创建发布数据库中数据的网站,您需要以下要素:

二.SQL语法

1)数据库表:

2)SQL 语句

3)SQL语句分类:

a)查询和更新指令构成了 SQL 的 DML 部分: 

b)SQL 中最重要的 DDL 语句:使我们有能力创建或删除表格

三.常用SQL语句用法

1)SELECT : SELECT +列名称 +FROM +表名称  或 SELECT + * + FROM +表名称     [结果被存储在一个结果表中(称为结果集)。]

SELECT实例:

SELECT *  实例

2) SELECT DISTINCT 语句

"Orders"表:

结果:在结果集中,W3School 被列出了两次

结果:在结果集中,"W3School" 仅被列出了一次

3)WHERE 子句

3)AND 和 OR 运算符

原始的表 (用在例子中的):

结果:

结果:

结果:

4)ORDER BY 语句

实例 1

结果:按company名称的首字母排序

实例 2

实例 3

结果:

实例 4

结果:

5)INSERT INTO 语句

实例1   插入新的行

"Persons" 表:

结果:

实例2   向指定的列中插入数据

"Persons" 表:

SQL 语句:

结果:

6)Update 语句  (用于修改表中的数据。)

更新某一行中的一个列

Person:

结果:

更新某一行中的若干列

结果:

DELETE 语句用于删除表中的某一行

结果:

删除所有行

四.HTTP协议详解

(一)工作原理:

(二)消息结构

(三)请求报文中的请求方式

(四)返回包关键字属性

(五)HTTP与HTTPS

1.什么是 HTTPS?

2.为什么需要 HTTPS ?

.3.HTTP 和 HTTPS 的相同点

4.HTTP 和 HTTPS 的不同之处

5.HTTPS 如何工作?

6.HTTP 包含如下动作:

7.SSL 包含如下动作:

8什么时候该使用 HTTPS?

五.常见 Web 服务端架构简介

六、PHP基础教程

1)简介

什么是 PHP?

什么是 PHP 文件?

PHP 能够做什么?      

为什么使用 PHP?

2)基础语法

3)变量

四)输出语句:echo 和 print

echo语句

print 语句

五)数据类型:字符串、整数、浮点数、逻辑、数组、对象、NULL。

六)字符串函数

七)常量

八)运算符

九)逻辑运算符

十)PHP 数组运算符:

十一)PHP条件语句

十二)循环语句

十三)在 PHP 创建用户定义函数

十四)数组

十五)数组排序函数

十六)超全局变量


一.SQL 简介:用于访问和处理数据库的标准的计算机语言

1)是什么:

  • SQL 指结构化查询语言

  • SQL 使我们有能力访问数据库

  • SQL 是一种 ANSI 的标准计算机语言

2)能干啥:(对数据库进行增删查改操作)

  1. SQL 面向数据库执行查询

  2. SQL 可从数据库取回数据

  3. SQL 可在数据库中插入新的记录

  4. SQL 可更新数据库中的数据

  5. SQL 可从数据库删除记录

  6. SQL 可创建新数据库

  7. SQL 可在数据库中创建新表

  8. SQL 可在数据库中创建存储过程

  9. SQL 可在数据库中创建视图

  10. SQL 可以设置表、存储过程和视图的权限

(特别提醒)要创建发布数据库中数据的网站,您需要以下要素:

  • RDBMS 数据库程序(比如 MS Access, SQL Server, MySQL)
  • 服务器端脚本语言(比如 PHP 或 ASP)
  • SQL
  • HTML / CSS

二.SQL语法

(写在前面):SQL 对大小写不敏感

1)数据库表:

个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。

2)SQL 语句

如:下面的语句从表中选取 LastName 列的数据:

SELECT LastName FROM Persons

某些数据库系统要求在每条 SQL 命令的末端使用分号。在我们的教程中不使用分号。

分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。

如果您使用的是 MS Access 和 SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。

 

3)SQL语句分类:

a)查询和更新指令构成了 SQL 的 DML 部分: 

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

b)SQL 中最重要的 DDL 语句:使我们有能力创建或删除表格

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

三.常用SQL语句用法

1)SELECT : SELECT +列名称 +FROM +表名称  或 SELECT + * + FROM +表名称     [结果被存储在一个结果表中(称为结果集)。]

SELECT实例:

如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:

SELECT LastName,FirstName FROM Persons

SELECT *  实例

从 "Persons" 表中选取所有的列

SELECT * FROM Persons //星号(*)是选取所有列的快捷方式

(写在后面)

由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。

2) SELECT DISTINCT 语句

(在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。)

SELECT DISTINCT 列名称 FROM 表名称

如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:  SELECT Company  FROM  Orders

"Orders"表:

CompanyOrderNumber
IBM3532
W3School2356
Apple4698
W3School6953

结果:在结果集中,W3School 被列出了两次

Company
IBM
W3School
Apple
W3School

如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:SELECT DISTINCT Company FROM Orders

结果:在结果集中,"W3School" 仅被列出了一次

Company
IBM
W3School
Apple

3)WHERE 子句

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

下面的运算符可在 WHERE 子句中使用:

操作符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式

注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。

如果只希望选取居住在城市 "Beijing" 中的人,我们需要向 SELECT 语句添加 WHERE 子句:

SELECT * FROM Persons WHERE City='Beijing'

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号

文本值:
这是正确的:
SELECT * FROM Persons WHERE FirstName='Bush'

这是错误的:
SELECT * FROM Persons WHERE FirstName=Bush

数值:

这是正确的:
SELECT * FROM Persons WHERE Year>1965

这是错误的:
SELECT * FROM Persons WHERE Year>'1965'

3)AND 和 OR 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

原始的表 (用在例子中的):

LastNameFirstNameAddressCity
AdamsJohnOxford StreetLondon
BushGeorgeFifth AvenueNew York
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

结果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing

使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:

SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'

结果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'

结果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
CarterWilliamXuanwumen 10Beijing

4)ORDER BY 语句

  1. ORDER BY 语句用于根据指定的列对结果集进行排序。
  2. ORDER BY 语句默认按照升序对记录进行排序。
  3. 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

Orders 表:

CompanyOrderNumber
IBM3532
W3School2356
Apple4698
W3School6953

实例 1

以字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

结果:按company名称的首字母排序

CompanyOrderNumber
Apple4698
IBM3532
W3School6953
W3School2356

实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

结果:使得Company相同的按照OrderNumber来排序

CompanyOrderNumber
Apple4698
IBM3532
W3School2356
W3School6953

实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

结果:

CompanyOrderNumber
W3School6953
W3School2356
IBM3532
Apple4698

实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

结果:

CompanyOrderNumber
W3School2356
W3School6953
IBM3532
Apple4698

5)INSERT INTO 语句

语法:

INSERT INTO 表名称 VALUES (值1, 值2,....)

也可以指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

实例1   插入新的行

"Persons" 表:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

结果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing

实例2   向指定的列中插入数据

"Persons" 表:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing

SQL 语句:

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

结果:

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
GatesBillXuanwumen 10Beijing
Wilson Champs-Elysees 

6)Update 语句  (用于修改表中的数据。)

语法:

UPDATE 表名称 SET 列名称1 = 新值 WHERE 列名称2 = 某值
//列名称1是新值放置的列,列名称2用于查找新值所在的行

更新某一行中的一个列

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' 

Person:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
Wilson Champs-Elysees 

结果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredChamps-Elysees 

更新某一行中的若干列

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'

结果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredZhongshan 23Nanjing

DELETE 语句用于删除表中的某一行

DELETE FROM 表名称 WHERE 列名称 = 值

//"Fred Wilson"所在的行 会被删除:
DELETE FROM Person WHERE LastName = 'Wilson' 

结果:

LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing

删除所有行

(可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:)

DELETE FROM table_name
//或者:

DELETE * FROM table_name

四.HTTP协议详解

一个基于TCP/IP通信协议,从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

(一)工作原理:

  • HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。Web服务器根据接收到的请求后,向客户端发送响应信息。HTTP默认端口号为80
  • HTTP三点注意事项:

  1. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

  2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

  3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

(二)消息结构

            1.客户端请求消息:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成

          2.服务器响应消息也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

          3.响应状态码:

                               状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
                                          1xx:指示信息--表示请求已接收,继续处理
                                          2xx:成功--表示请求已被成功接收、理解、接受
                                          3xx:重定向--要完成请求必须进行更进一步的操作
                                          4xx:客户端错误--请求有语法错误或请求无法实现
                                          5xx:服务器端错误--服务器未能实现合法的请求

                             常见状态代码、状态描述、说明:
                                           200 OK      //客户端请求成功
                                          400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
                                          401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
                                          403 Forbidden  //服务器收到请求,但是拒绝提供服务
                                          404 Not Found  //请求资源不存在,eg:输入了错误的URL
                                          500 Internal Server Error //服务器发生不可预期的错误
                                          503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
                                          eg:HTTP/1.1 200 OK (CRLF)

GET实例:

客户端请求:

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

服务端响应:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

输出结果:

Hello World! My payload includes a trailing CRLF.

(三)请求报文中的请求方式

序号方法描述
1GET请求指定的页面信息,并返回实体主体。
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容。
5DELETE请求服务器删除指定的页面。
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
7OPTIONS允许客户端查看服务器的性能。
8TRACE回显服务器收到的请求,主要用于测试或诊断。
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

(四)返回包关键字属性

server 
Set-Cookie 
Content-Type

指定响应的 HTTP内容类型。如果未指定 ContentType,默认为TEXT/HTML

HTML      <meta content="text/html; charset=gb2312" http-equiv="Content-Type"/>

httponly 

 

(五)HTTP与HTTPS

1.什么是 HTTPS?

HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议。

你也可以说:HTTPS = HTTP + SSL

HTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层。

2.为什么需要 HTTPS ?

超文本传输协议 (HTTP) 是一个用来通过互联网传输和接收信息的协议。HTTP 使用请求/响应的过程,因此信息可在服务器间快速、轻松而且精确的进行传输。当你访问 Web 页面的时候你就是在使用 HTTP 协议,但 HTTP 是不安全的,可以轻松对窃听你跟 Web 服务器之间的数据传输。在很多情况下,客户和服务器之间传输的是敏感歇息,需要防止未经授权的访问。为了满足这个要求,网景公司(Netscape)推出了HTTPS,也就是基于安全套接字层的 HTTP 协议。

.3.HTTP 和 HTTPS 的相同点

大多数情况下,HTTP 和 HTTPS 是相同的,因为都是采用同一个基础的协议,作为 HTTP 或 HTTPS 客户端——浏览器,设立一个连接到 Web 服务器指定的端口。当服务器接收到请求,它会返回一个状态码以及消息,这个回应可能是请求信息、或者指示某个错误发送的错误信息。系统使用统一资源定位器 URI 模式,因此资源可以被唯一指定。而 HTTPS 和 HTTP 唯一不同的只是一个协议头(https)的说明,其他都是一样的。

4.HTTP 和 HTTPS 的不同之处

  1. HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
  2. HTTP 是不安全的,而 HTTPS 是安全的
  3. HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
  4. 在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
  5. HTTP 无需加密,而 HTTPS 对传输的数据进行加密
  6. HTTP 无需证书,而 HTTPS 需要认证证书

5.HTTPS 如何工作?

使用 HTTPS 连接时,服务器要求有公钥和签名的证书。

当使用 https 连接,服务器响应初始连接,并提供它所支持的加密方法。作为回应,客户端选择一个连接方法,并且客户端和服务器端交换证书验证彼此身份。完成之后,在确保使用相同密钥的情况下传输加密信息,然后关闭连接。为了提供 https 连接支持,服务器必须有一个公钥证书,该证书包含经过证书机构认证的密钥信息,大部分证书都是通过第三方机构授权的,以保证证书是安全的。

换句话说,HTTPS 跟 HTTP 一样,只不过增加了 SSL

6.HTTP 包含如下动作:

  1. 浏览器打开一个 TCP 连接
  2. 浏览器发送 HTTP 请求到服务器端
  3. 服务器发送 HTTP 回应信息到浏览器
  4. TCP 连接关闭

7.SSL 包含如下动作:

  1. 验证服务器端
  2. 允许客户端和服务器端选择加密算法和密码,确保双方都支持
  3. 验证客户端(可选)
  4. 使用公钥加密技术来生成共享加密数据
  5. 创建一个加密的 SSL 连接
  6. 基于该 SSL 连接传递 HTTP 请求

8什么时候该使用 HTTPS?

银行网站、支付网关、购物网站、登录页、电子邮件以及一些企业部门的网站应该使用 HTTPS,例如:

  • PayPal: https://www.paypal.com
  • Google AdSense: https://www.google.com/adsense/

五.常见 Web 服务端架构简介

  • Windows + IIS + ASP.net + SQL Server
  • Linux + Apache +PHP +Mysql

六、PHP基础教程

(学习前的必备基础:对HTML,CSS,JavaScript有基本的了解)

1)简介

什么是 PHP?

  • PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词
  • PHP 是一种被广泛使用的开源脚本语言
  • PHP 脚本在服务器上执行
  • PHP 没有成本,可供免费下载和使用

什么是 PHP 文件?

  • PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
  • PHP 代码在服务器上执行,而结果以纯文本返回浏览器
  • PHP 文件的后缀是 ".php"

PHP 能够做什么?      

通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML
  • PHP 能够生成动态页面内容
  • PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
  • PHP 能够接收表单数据
  • PHP 能够发送并取回 cookies
  • PHP 能够添加、删除、修改数据库中的数据
  • PHP 能够限制用户访问网站中的某些页面
  • PHP 能够对数据进行加密

为什么使用 PHP?

  • PHP 运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
  • PHP 兼容几乎所有服务器(Apache, IIS 等等)
  • PHP 支持多种数据库
  • PHP 是免费的。请从官方 PHP 资源下载:www.php.net
  • PHP 易于学习,并可高效地运行在服务器端

2)基础语法

PHP 脚本可放置于文档中的任何位置。PHP 脚本以 <?php 开头,以 ?> 结尾;   PHP 语句以分号结尾(;)

PHP 支持三种注释:
实例
<!DOCTYPE html>
<html>
<body>

<?php
// 这是单行注释

# 这也是单行注释

/*
这是多行注释块
它横跨了
多行
*/
?>

</body>
</html>

PHP 大小写敏感
在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。不过在 PHP 中,所有变量都对大小写敏感。

3)变量

变量规则:PHP 没有创建变量的命令。变量会在首次为其赋值时被创建

  • 变量以 $ 符号开头,其后是变量的名称
  • 变量名称必须以字母或下划线开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)                注释:PHP 变量名称对大小写敏感!
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

变量作用域

  • local(局部)
  • global(全局)
  • static(静态)
global 关键词用于在函数内访问全局变量。要做到这一点,请在(函数内部)变量前面使用 global 关键词:PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。
下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。

实例
<?php
$x=5;
$y=10;

function myTest() {
  global $x,$y;      //$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
  $y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

static 关键词
通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作。

要完成这一点,请在您首次声明变量时使用 static 关键词:

实例
<?php

function myTest() {
  static $x=0;
  echo $x;
  $x++;
}

myTest();
myTest();
myTest();

?>

四)输出语句:echo 和 print

  • echo - 能够输出一个以上的字符串  (echo 是一个语言结构,有无括号均可使用:echo 或 echo())
  • print - 只能输出一个字符串,并始终返回 1

提示:echo 比 print 稍快,因为它不返回任何值。

  • echo语句

显示字符串
下面的例子展示如何用 echo 命令来显示不同的字符串(同时请注意字符串中能包含 HTML 标记):

<?php
echo "<h2>PHP is fun!</h2>";
echo "Hello world!<br>";
echo "I'm about to learn PHP!<br>";
echo "This", " string", " was", " made", " with multiple parameters.";
?>

显示变量
下面的例子展示如何用 echo 命令来显示字符串和变量:

<?php
$txt1="Learn PHP";
$txt2="W3School.com.cn";
$cars=array("Volvo","BMW","SAAB");

echo $txt1;
echo "<br>";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
?>

print 语句

显示字符串
下面的例子展示如何用 print 命令来显示不同的字符串(同时请注意字符串中能包含 HTML 标记):

<?php
print "<h2>PHP is fun!</h2>";
print "Hello world!<br>";
print "I'm about to learn PHP!";
?>

显示变量
下面的例子展示如何用 print 命令来显示字符串和变量:

<?php
$txt1="Learn PHP";
$txt2="W3School.com.cn";
$cars=array("Volvo","BMW","SAAB");

print $txt1;
print "<br>";
print "Study PHP at $txt2";
print "My car is a {$cars[0]}";
?>

五)数据类型:字符串、整数、浮点数、逻辑、数组、对象、NULL。

1)字符串:字符串是字符序列,比如 "Hello world!"。字符串可以是引号内的任何文本。您可以使用单引号或双引号:

<?php 
$x = "Hello world!";  echo $x;  echo "<br>";   $x = 'Hello world!';  echo $x;
?>
//结果:
Hello world!
Hello world!

2)整数

  • 整数必须有至少一个数字(0-9)
  • 整数不能包含逗号或空格
  • 整数不能有小数点
  • 整数正负均可
  • 可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)
    <?php 
    $x = 5985;
    var_dump($x);
    echo "<br>"; 
    $x = -345; // 负数
    var_dump($x);
    echo "<br>"; 
    $x = 0x8C; // 十六进制数
    var_dump($x);
    echo "<br>";
    $x = 047; // 八进制数
    var_dump($x);
    ?>

    3)浮点数(有小数点或指数形式的数字)

  • <?php 
    $x = 10.365;
    var_dump($x);
    echo "<br>"; 
    $x = 2.4e3;
    var_dump($x);
    echo "<br>"; 
    $x = 8E-5;
    var_dump($x);
    ?>

    4)逻辑

    逻辑是 true 或 false。        $x=true;        $y=false;

    5)数组

  • PHP var_dump() 会返回变量的数据类型和值:
    
    实例
    <?php 
    $cars=array("Volvo","BMW","SAAB");        var_dump($cars);
    ?>  
    //结果:array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }

     

6)对象

(存储数据和有关如何处理数据的信息的数据类型。必须明确地声明对象。首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型)

<?php
class Car
{
    var $color;
    function Car($color="green") {
      $this->color = $color;
    }
    function what_color() {
      return $this->color;
    }
}
function print_vars($obj) {
   foreach (get_object_vars($obj) as $prop => $val) {
     echo "\t$prop = $val\n";
   }
}
// instantiate one object
$herbie = new Car("white");
// show herbie properties
echo "\herbie: Properties\n";
print_vars($herbie);
?>  //结果: \herbie: Properties color = white

7)NULL

特殊的 NULL 值表示变量无值。NULL 是数据类型 NULL 唯一可能的值。

NULL 值标示变量是否为空。也用于区分空字符串与空值数据库。

可以通过把值设置为 NULL,将变量清空:

实例
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

六)字符串函数

函数名作用实例

strlen() 

返回字符串的长度,以字符计echo strlen("hello world!");//结果:12   提示:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时。
str_word_count()对字符串中的单词进行计数echo str_word_count("Hello world!");       // 输出 2
strrev()反转字符串echo strrev("Hello world!");                     // 输出 !dlrow olleH
strpos() 用于检索字符串内指定的字符或文本,如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSEecho strpos("Hello world!","world");       //  6
str_replace()用一些字符串替换字符串中的另一些字符echo str_replace("world", "Kitty", "Hello world!");       // 输出 Hello Kitty!

七)常量

  • 常量是单个值的标识符(名称)。在脚本中无法改变该值。
  • 有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。
  • 与变量不同,常量贯穿整个脚本是自动全局的,而且可以贯穿整个脚本使用
设置 PHP 常量
如需设置常量,请使用 define() 函数 - 它使用三个参数:

首个参数定义常量的名称
第二个参数定义常量的值
可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
下例创建了一个对大小写敏感的常量,值为 "Welcome to W3School.com.cn!":

实例
<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>

八)运算符

#算数运算符(+  -  *  %与C语言一致,另外除法运算符/不一样,/得到的结果是浮点数,不是整数)

#赋值运算符(=  +=  -=  *=  %=与C语言一致,另外,/=得到的是浮点数,不是整数)

#字符串运算符

运算符名称例子结果
.串接$txt1 = "Hello"           $txt2 = $txt1 . " world!"现在 $txt2 包含 "Hello world!"
.=串接赋值$txt1 = "Hello"            $txt1 .= " world!"现在 $txt1 包含 "Hello world!"


#递增/递减运算符(++    --  与C语言一致)

#比较运算符

运算符名称例子结果
==等于$x == $y如果 $x 等于 $y,则返回 true。
===全等(完全相同)$x === $y如果 $x 等于 $y,且它们类型相同,则返回 true。
!=不等于$x != $y如果 $x 不等于 $y,则返回 true。
<>不等于$x <> $y如果 $x 不等于 $y,则返回 true。
!==不全等(完全不同)$x !== $y如果 $x 不等于 $y,或它们类型不相同,则返回 true。
>大于$x > $y如果 $x 大于 $y,则返回 true。
<小于$x < $y如果 $x 小于 $y,则返回 true。
>=大于或等于$x >= $y如果 $x 大于或者等于 $y,则返回 true.
<=小于或等于$x <= $y如果 $x 小于或者等于 $y,则返回 true。

九)逻辑运算符

运算符名称例子结果
and$x and $y如果 $x 和 $y 都为 true,则返回 true。
or$x or $y如果 $x 和 $y 至少有一个为 true,则返回 true。
xor异或$x xor $y如果 $x 和 $y 有且仅有一个为 true,则返回 true。
&&$x && $y如果 $x 和 $y 都为 true,则返回 true。
||$x || $y如果 $x 和 $y 至少有一个为 true,则返回 true。
!!$x如果 $x 不为 true,则返回 true。

十)PHP 数组运算符:

运算符名称例子结果
+联合$x + $y$x 和 $y 的联合(但不覆盖重复的键)
==相等$x == $y如果 $x 和 $y 拥有相同的键/值对,则返回 true。
===全等$x === $y如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
!=不相等$x != $y如果 $x 不等于 $y,则返回 true。
<>不相等$x <> $y如果 $x 不等于 $y,则返回 true。
!==不全等$x !== $y如果 $x 与 $y 完全不同,则返回 true。

十一)PHP条件语句

  • if 语句 - 如果指定条件为真,则执行代码
  • if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
  • if...elseif....else 语句 - 根据两个以上的条件执行不同的代码块
  • switch 语句 - 选择多个代码块之一来执行
if (条件) {
  当条件为 true 时执行的代码;
}

if (条件) {
  条件为 true 时执行的代码;
} else {
  条件为 false 时执行的代码;
}

if (条件) {
  条件为 true 时执行的代码;
} elseif (condition) {
  条件为 true 时执行的代码;
} else {
  条件为 false 时执行的代码;
}

switch (expression)
{
case label1:
  expression = label1 时执行的代码 ;
  break;  
case label2:
  expression = label2 时执行的代码 ;
  break;
default:
  表达式的值不等于 label1 及 label2 时执行的代码;
}

十二)循环语句

  1. while - 只要指定条件为真,则循环代码块
  2. do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
  3. for - 循环代码块指定次数
  4. foreach - 遍历数组中的每个元素并循环代码块

前3个与C语言一致,另外foreach只适用于数组,并用于遍历数组中的每个键/值对

语法:
foreach ($array as $value) {
  code to be executed;
}
每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

下面的例子演示的循环将输出给定数组($colors)的值:

实例
<?php 
$colors = array("red","green","blue","yellow"); 

foreach ($colors as $value) {
  echo "$value <br>";
}
?>

十三)在 PHP 创建用户定义函数

用户定义的函数声明以单词 "function" 开头:

语法

function functionName() {
  被执行的代码;
}

注释:函数名能够以字母或下划线开头(而非数字)。

注释:函数名对大小写不敏感。

{与JavaScript的用户定义函数一致,在此不再多说}

十四)数组

在 PHP 中,有三种数组类型: array() 函数用于创建数组count() 函数用于返回数组的长度(元素数)

  • 索引数组 - 带有数字索引的数组
<?php
$cars=array("porsche","BMW","Volvo");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";/*I like porsche, BMW and Volvo.*/
echo "<br/>";
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++) {
  echo $cars[$x];
  echo "<br>";
}
/*porsche
BMW
Volvo
*/
?>
结果:  
  • 关联数组 - 带有指定键的数组
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
echo "Elon is " . $age['Elon'] . " years old.";
?>
//Elon is 47 years old.

<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");

foreach($age as $x=>$x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}
?>
/*
Key=Bill, Value=63
Key=Steve, Value=56
Key=Elon, Value=47
*/
  • 多维数组 - 包含一个或多个数组的数组

十五)数组排序函数

函数作用实例

sort() 

以升序对数组排序按照字母升序对数组 $cars 中的元素进行排序:
$cars=array("porsche","BMW","Volvo");
sort($cars);
按照数字升序对数组 $numbers 中的元素进行排序:
$numbers=array(3,5,1,22,11);
sort($numbers);
asort()根据值,以升序对关联数组进行排序
下面的例子根据值对关联数组进行升序排序:

实例
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
asort($age);
?>
 

 

ksort()根据键,以升序对关联数组进行排序
下面的例子根据键对关联数组进行升序排序:

实例
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
ksort($age);
?>

 

rsort() 

以降序对数组排序
按照字母降序对数组 $cars 中的元素进行排序
<?php
$cars=array("porsche","BMW","Volvo");
rsort($cars);
?>

按照数字降序对数组 $numbers 中的元素进行排序
<?php
$numbers=array(3,5,1,22,11);
rsort($numbers);
?>

arsort()

- 根据值,以降序对关联数组进行排序
下面的例子根据值对关联数组进行降序排序:

实例
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
arsort($age);
?>

 

krsort()

- 根据键,以降序对关联数组进行排序
下面的例子根据键对关联数组进行降序排序:

实例
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
krsort($age);
?>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

十六)超全局变量

1、$GLOBALS:这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键

<?php 
$x = 75; 
$y = 25;
 
function addition() { 
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
 
addition(); 
echo $z; 
?>  //95

2、$_SERVER :这种超全局变量保存关于报头、路径和脚本位置的信息。

元素/代码描述
$_SERVER['PHP_SELF']返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE']返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR']返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME']返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER['SERVER_SOFTWARE']返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER['SERVER_PROTOCOL']返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD']返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME']返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING']返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT']返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET']返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST']返回来自当前请求的 Host 头。
$_SERVER['HTTP_REFERER']返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER['HTTPS']是否通过安全 HTTP 协议查询脚本。
$_SERVER['REMOTE_ADDR']返回浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST']返回浏览当前页面的用户的主机名。
$_SERVER['REMOTE_PORT']返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME']返回当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN']该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT']Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE']返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED']当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME']返回当前脚本的路径。/3,,3

 3、$_REQUEST 用于收集 HTML 表单提交的数据

下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

</body>

4、PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <form> 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:

实例
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_POST['fname'];
echo $name; 
?>

</body>
</html>

5、PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据,$_GET 也可以收集 URL 中的发送的数据。

假设我们有一张页面含有带参数的超链接:

<html>
<body>

<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>

</body>
</html>
当用户点击链接 "测试 $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。

下面的例子是 "test_get.php" 中的代码:

实例
<html>
<body>

<?php 
echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject'];
?>

</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值