《PHP和MySQL Web开发》-- 读书笔记

第1章 PHP快速入门

PHP脚本在Web服务器上被解释和执行,这与在用户机器上的Web浏览器中解释并执行的JavaScript及其他客户端技术是不同的。

 

PHP标记

PHP标记有4种不同的风格可供我们使用

(1)<?php echo '<p>Order processed.</p>' ; ?>

它是PHP推荐的标记风格,服务器管理员不能禁用这种风格的标记,因此可以保证在所有服务器上使用这种风格的标记。

(2)<?  echo '<p>Order processed.</p>' ; ?>

这是简短风格,你必须在配置文件中启用short_open_tag选项,或者启用短标记选项编译PHP。不推荐使用这种风格的标记,因为这种风格在许多环境的默认设置中已经不支持

(3)<script language='php'> echo '<p>Order processed.</p>' ;</script>

这种标记风格是最长的

(4)<%  echo '<p>Order processed.</p>' ; %>

这种标记风格与Active Server Pages(ASP)或ASP.net的标记相同。如果在配置设定中启用了asp_tags选项,就可以使用它。

 

在PHP中,分号是用来分隔语句的。

 

注释

PHP支持C、C++和Shell脚本风格的注释。

(1)/*  ... */

(2)//....

(3)#...

 

表单变量

访问表单变量有3种风格:

(1)简短 e.g. $tireqty

但是需要将register_globals配置选项设置为on,这种风格的标记容易产生安全问题的错误,也就是为什么不推荐的原因

(2)中等 e.g. $_POST['tireqty']

推荐

(3)冗长 e.g.HTTP_POST_VARS[‘tireqty’]

已经被弃用

 

字符串的连接

点号是字符串的连接符,它可以将几段文本连接成一个字符串。在双引号中,变量名将被变量值所替代,而在单引号中,变量名称,或者任何其他文本者会不经修改而发送给浏览器。

 

标识符

PHP定义了一些简单的规则:

(1)标识符可以是任何长度,而且可以由任何字母、数字、下划线组成。

(2)标识符不能以数字开始

(3)标识符区分大小写。对于这个规则,函数名称是个例外

(4)一个变量名称可以与一个函数名称相同

PHP的特性之一就是不要求在使用变量之前声明变量。

 

变量类型

PHP支持如下所示的基本数据类型

(1)Integer

(2)Float

(3)String

(4)Boolean

(5)Array

(6)Object

(7)NULL(空),没有赋值、已经被重置或者被赋值为特殊值NULL的变量就是NULL类型的变量

(8)resource(资源),特定的内置函数将返回resource类型的变量,它们都代表外部资源

PHP是一种弱类型语言,当变量被赋值时,PHP将“自动地”获得输入的数据类型。

 

常量

可以使用define函数定义常量。常量和变量之间的一个重要不同点在于引用一个常量的时候,它前面并没有$符号.除了可以定义常量外,PHP还预定义了许多常量。了解这些常量的简单方法就是运行phpinfo()函数。

 

作用域

(1)内置超级全局变量可以在脚本的任何地方使用和可见

(2)常量,一旦被声明,将可以在全局可见

(3)在一个脚本中声明的全局变量在整个脚本是可见的,但不是在函数内部

(4)函数内部使用的变量声明为全局变量时,其名称与全局变量名称一致。

 

超级全局变量

$GLOBALS,所有全局变量数组

$_SERVER,服务器环境变量数组

$_GET,通过GET方法传递给该脚本的变量数组

$_POST,通过POST方法传递给该脚本的变量数组

$_COOKIE,cookie变量数组

$_FILES,与文件上传相关的变量数组

$_ENV,环境变量数组

$_REQUEST,所有用户输入的变量数组,包括$_GET,$_POST,$_COOKIE所包含的输入内容

$_SESSION,会话变量数组

 

操作符

(1)恒等操作符===(三个等于号),只有当恒等操作符两边的操作数相等并且具有相同的数据类型时,其返回值才为true。

(2)错误抑制操作符@,可以在任何表达式前面使用,即任何有值的或者可以计算出值的表达式前面

(3)执行操作符``,它是一对反单引号,PHP将试着将反单引号之间的命令当作服务器端的命令行来执行

 

declare

declare(directive)

{

//block

}

这种结构用来设置代码块的执行指令,也就是,关于后续代码如何运行的规则。

 

第2章  数据的存储和检索

存储数据有两种基本方法:保存到普通文件,或者保存到数据库中。

 

第3章 使用数组

e.g.

$products = array('Tires','Oil','Spark Plugs');

array()实际上是一个语言结构,而不是一个函数。

可以用如下方式初始化关联数组:

$products = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);

 

第5章 代码重用和函数编写

使用一条require()或include()语句,可以将一个文件载入到PHP脚本中。二者唯一的不同是在于函数失败后,require()函数将给出一个致命的错误,而include()只是给出一个警告。

 

函数定义使用关键字function,另外PHP不支持函数重载。

 

第6章 面向对象的PHP

使用关键字class。

 

第8章 设计Web数据库

关系数据库由关系组成,这些关系通常称为表格。一个典型的Web数据库事务包含下列步骤:

(1)用户的Web浏览器发出HTTP请求,请求特定Web页面。例如,该用户以HTML表单的形式,要求搜索图书。搜索结果网页称为result.php

(2)Web服务器收到result.php请求,获致该文件,并将它传到PHP引擎,要求它处理

(3)PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询的命令,PHP打开通向MySQL数据库的链接,发送适当的查询

(4)MySQL服务器接受数据库查询并处理。将结果返回PHP引擎

(5)PHP引擎完成脚本运行,通常,这包括将查询结果格式化成HTML格式。然后再将输出的HTML返回Web服务器

(6)Web服务器将HTML发送到浏览器。这样用户就可看到搜索结果

 

第9章 创建Web数据库

SQL语句不区分大小写,但数据库和表的名称则区分大小写。每个命令都用分号(;)分开,分号将告诉MySQL执行这个命令。如果漏掉了这些分号,MySQL将不会执行这些命令。

登录到MySQL

mysql -h hostname -u username -p

-h命令选项用于指定所希望连接的主机,即运行MySQL服务器的机器。如果正在该MySQL服务器所运行的机器上运行该命令,可以忽略该选项和hostname参数。

 

创建数据库和用户

create database dbname;

 

MySQL权限

GRANT和REVOKE命令分别用来授予和取消MySQL用户的权限,这些权限分4个级别。它们分别是

(1)全局

(2)数据库

(3)表

(4)列

MySQL中存在3个基本类型的:适用于赋予一般用户的权限、适用于赋予管理员的权限和几个特定的权限。

用户的权限
权限应用于描述
select表,列允许用户从表中选择行
insert表,列允许用户在表中插入新行
update表,列允许用户修改现在表里行中的值
delete允许用户删除现存表的行
index允许用户创建和拖动特定表索引
alter允许用户改变现存表的结构,例如:
可添加列、重命令列或表、修改列的数据类型
create数据库,表允许用户创建新数据库或表
drop数据库,表允许用户删除数据库或表

 

管理员权限
权限描述
create temporary tables允许管理员在create table语句中使用temporary关键字
file允许将数据库文件读入表,或从表读入文件
lock tables允许使用lock tables语句
process允许管理中查看属于所有用户的服务器进程
reload允许管理员查看属于所有用户的服务器进程
replication client允许复制主机和从机上使用show status
replication slave允许复制从服务器连接到主服务器。
show databases允许使用show databases语句查看所有数据库列表。
shutdown允许管理呐关闭MySQSL服务器
super允许管理员关闭属于任何用户线程

 

特别的权限
权限描述
all所有权限
usage通常在以后会授予该用户更多的权限

 

 

 

GRANT

grant privileges [columns]

on item

to user_name [identified by password]

[require ssl_options]

[with [grant option|limit_options]]

(1)privileges应该是由逗号分开的一组权限。

(2)colums可以用它对每一列指定权限,也可以使用单列的名称或者用逗号分开的一组列的名称

(3)item是新权限所应用于的数据库或表,可以将项目指定为*.*,而将权限应用于所有数据库。

(4)WITH GRANT OPTION表示允许指定的用户向别人授予自己的拥有的权限

权限存储在名为mysql的数据库中的5个系统表中,这些表分别是mysql.user mysql.db  mysql.host mysql.table_priv mysql.columns_priv。作为grant命令的替代,可以直接修改这些表。

 

REVOKE

revoke privileges [(columns)]

on item

from user_name

如果已经给出了with grant options子句,可以按如下方式撤销它:

revoke all privileges ,grant

from user_name

 

使用数据库

 use dbname;

 

创建数据库表

create table tablename (colums)

columns用逗号分开的列名称,每一列应该有一个名字,该名字后面紧跟其数据类型

例如:

create table customers(

customerid int unsigned not null auto_increment primary key,

name char(50) not null,

address char(100) not null,

city char(30) not null

);

 

show

(1)show tables;查看数据库中的所有表

(2)show databases;查看所有的数据库

如果要查看某个选定表的详细信息,可以使用describe命令。

 

创建 索引 

create [unique|fulltext] index index_name

on table_name (index_column_name [(length) [asc|desc],... ])

(1)length,允许指定只有该字段的前length个字符将被索引。

 

选择列数据类型

MySQL中有3种基本的数据列数据类型:数字、日期和时间、字符串。

(1)数字类型

数字类型分为整形和浮点型两类

整数数据类型
类型取值范围存储空间(单位为字节)描述
TINYINT[(M)]-127~128或0~2551非常小的整数
BIT  TINYINT的同义词
BOOL  TINYINT的同义词
SMALLINT[(M)]-31768~32767或0~655362小型整数
MEDIUMINT[(M)]-8388608~8388607或0~167772153中型整数
INT[(M)]-2^31~-(2^31)-1或0~(2^32)-14一般整数
INTEGER[(M)]  INT的同义词
BIGINT[(M)]-2^63~-(2^63)-1或0~(2^64)-18大型整数

 

浮点数据类型
类型 取值范围存储空间
(以字节为单位)
描述
FLOAT(精度)取决于精度可变用于指定单精度和双精度浮点数
FLOAT[(M,D)] 4单精度浮点数,等同于FLOAT(4),
但是指定显示宽度和小数位数
DOUBLE[(M,D)] 8双精度浮点数,等同于FLOAT(8),但是指定显示宽度和小数
位数
DOUBLE同上 与DOUBLE[(M,D)]同义
PRECISION[(M,D)]  与DOUBLE[(M,D)]同义
REAL[(M,D)]  与DOUBLE[(M,D)]同义
DECIMAL[(M[,D])]可变M+2浮点数,以char存储,范围取决于显示宽度M
NUMERIC[(M,D)]同上 DECIMAL同义词
DEC[(M,D)]同上 DECIMAL同义词
FIXED[(M,D)]同上 DECIMAL同义词

 

(2)日期和时间类型

类型取值范围描述
DATE1000-01-01
9999-12-31
一个日期,以YYYY-MM-DD格式显示
TIME-838:59:59
838:59:59
一个时间,以HH:MM:SS形式显示。
DATETIME1000-01-0100:00:00
9999-12-31 23:59:59
日期和时间,以YYYY-MM-DD HH:MM:SS格式显示
TIMESTAMP[(M)]1970-01-01 00:00:00
2037年的某个时间
时间标签,在处理报告中有意义。范围的最高值取决于UNIX的限制
YEAR[(2/4)]70-69(1970~2069)
1901~2155
年份,可以指定2位数字或4位数字的格式。各有不同的范围

(3)字符串

常规字符串类型
类型描述
[NATIONAL]
CHAR(M)
[BINARY|ASCII|UNICODE]
固定长度为M的字符中,其中M的取值为0~255.
NATIONAL关键字指定了应该使用的默认字符集。虽然这是MySQL
的默认值,但包含它的原因是因为这是ANSI SQL标准的一部分。
[NATIONAL] VARCHAR(M)
[BINARY]
除了变长,其他与上一项相同

 

TEXT和BLOB
类型最大长度描述
TINYBLOB255小二进制大对象(BLOB)字段
TINYTEXT255小TEXT字段
BLOB65535常规大小BLOB字段
TEXT65535常规大小TEXT字段
MEDIUMBLOB(2^24)-1中型大小BLOB字段
MEDIUMTEXT(2^24)-1中型大小TEXT字段
LONGBLOB(2^32)-1长BLOB字段
LONGTEXT(2^32)-1长TEXT字段

 

SET和ENUM类型
类型集合中最大值描述
ENUM('value1','value2',...)65535该类型的列只可以容纳所列值之一或NULL
SET('value1','value2',...)64该类型的列可以容纳一组值或者NULL


第10章 使用MySQL数据库

插入数据

insert [into] table [(column1,column2,column3,...)] values

(value1,value2,value3,...);
也可以一次将多行插入到一个表中。而每一行应该出现在自己的括号里,每组括号之间要用逗号分开。

 

从数据库中获取数据

select [options] items

[into file_details]

from tables

[where conditions]

[group by group_type]

[having where_definition]

[order by order_type]

[limit limit_criteria]

[procedure proc_name(arguments)]

[lock_options]

;

where子句的实用比较运算符
运算符名称例子描述
=  测试两个值是否相等
>   
<   
>=   
<=   
!=或<>   
is not null  测试字段是否包含一个值
is null  测试字段是否不包含一个值
between  测试一个值是否大于或等于最小值并小于或等于最大值
in  测试一个值是否在特定的集合里
not in  测试一个值是否不在特定的集全里
like模式匹配 用简单的MySQL模式匹配检查一个值是否匹配于一个模式
not like模式匹配 检查一个值是否不匹配于一个模式
regexp常规表达式 检查一个值是否不匹配一个常规表达式

 

like使用简单的SQL模式匹配。模式可以由常规文本加上匹配任何数量的字符“%”和只匹配一个字符的"_"组成,REGEXP关键词用于正则表达式的匹配。MySQL使用POSIX正则表达式。

 

(1)简单的双表关联

表名之间的逗号等价于输入inner join或cross join,这是一种类型的关联,有时也称为完成关联或表的笛卡尔乘积。

(2)查找不匹配行

在MySQL中,实现此类查询最简单的方法就是使用左关联。左关联是在两个表之间指定的关联条件下匹配的数据行。如果右边的表中没有匹配的行,结果中就会增加一行,该行右边的列为NULL。

(3)order by

可以根据出现 在select子名中的一行或多列对数据行进行排序。

(4)

MySQL中的合计函数
名称描述
avg(列)指定列的平均值
count(项目)如果指一列,这将给出本列中非空值的列数
min(列) 
max(列) 
std(列)标准方差
stddev(列)与上相同
sun(列)指定列的所有值的和

(5)limit

它可以用来指定输出中哪些行应该返回,它有两个参数,起始行号与返回行数

 

(6)子查询

子查询是一个嵌套在另一个查询内部的查询,MySQL很长时间没有采纳子查询的主要原因之一在于,多数查询可以在没有子查询的情况下完成。

 

更新数据库记录

update [low_priority] [ignore] tablename

set column1 = expression1, column2=expresion2,...

[where condition] 

[order by order_criteria]

[limit number]

其基本思想是更新名为tablename的表,设置每列的名称为适当的表达式。可以通过where子句限制update到特定的行,也可以使用limit子句限制受影响的总行数。order by通常只在limit子句的连接中使用。

 

创建后修改表

alter table [ignore] tablename alteration [,alteration ...]

用alter table语句可能完成的修改
语法描述
add [column] column_description
[first|after column]
在指定地方添加新列(如果没指定,就在最后一列后面)。
注意column_description需要名称和类型与在create语句
中的名称和类型一致
add [column] (column_descrption,
column_description,...)
在表结尾添加一个或多个新的列
add index[index](column,...)在指定的一列或几列添加一个表的索引
add [constraint [symbol]]
primary key(column,...)
指定一列或几列为表主键。constraint是针对使用外键的表
add unique[constraint
constraint[symbol]]
[index] (column,...)
在指定的一列或几列添加一个唯一的表索引
add [constraint [symbol]]
foreign key [index](index_col,...)
[reference_definition]
为一个InnoDB表添加外键
alter [column] column  {set
default value|drop default}
添加或删除特定列的默认值
change [column] column 
new_column_description
改变名为column的列,添加所列出的描述。
modify [column] column_description类似于change,可以用来修改列类型,而不是类名称
drop [column] column删除指定的列
drop primary key删除主索引
drop index index删除指定的索引
drop foreign key key删除外键
disable keys禁用索引更新
enable keys开启索引更新
rename [as] new _table _name重新命名一个表
order by col_name以特定顺序的行重新创建表
convert to character set cs 
collate c
将所有文本列转换成指定字符集和排序
[default] character set cs
collate c
设置默认的字符集和排序
discard tablespace删除InnoDB表的可能表空间文件
import tablesapce为InnoDB表重新创建可能的表空间文件
table_options允许重新设置表选项
  
  
  

 

最后欢迎大家访问我的个人网站: 1024s

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 1.2.1 创建订单表单 1.2.2 表单处理 1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数 1.5 访问表单变量 1.5.1 简短、中等以及长风格的表单变量 1.5.2 字符串的连接 1.5.3 变量和文本 1.6 理解标识符 1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解变量的作用域 1.10 使用操作符 1.10.1 算术操作符 1.10.2 字符串操作符 1.10.3 赋值操作符 1.10.4 比较操作符 1.10.5 逻辑操作符 1.10.6 位操作符 1.10.7 其他操作符 1.11 计算表单总金额 1.12 理解操作符的优先级和结合性: 1.13 使用可变函数 1.13.1 测试和设置变量类型 1.13.2 测试变量状态 1.13.3 变量的重解释 1.14 根据条件进行决策 1.14.1 if语句 1.14.2 代码块 1.14.3 else语句 1.14.4 elseif语句 1.14.5 switch语句 1.14.6 比较不同的条件 1.15 通过迭代实现重复动作 1.15.1 while循环 1.15.2 for和foreach循环 1.15.3 do...while循环 1.16 从控制结构或脚本中跳出 1.17 使用可替换的控制结构语法 1.18 使用declare 1.19 下一章 第2章 数据的存储与检索 2.1 保存数据以便后期使用 2.2 存储和检索Bob的订单 2.3 文件处理 2.4 打开文件 2.4.1 选择文件模式 2.4.2 使用fopen()打开文件 2.4.3 通过FTP或HTTP打开文件 2.4.4 解决打开文件时可能遇到的问题 2.5 写文件 2.5.1 fwrite()的参数 2.5.2 文件格式 2.6 关闭文件 2.7 读文件 2.7.1 以只读模式打开文件:fopen() 2.7.2 知道何时读完文件:feof() 2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 2.7.4 读取整个文件:readfile()、fpassthru()和file() 2.7.5 读取一个字符:fgetc() 2.7.6 读取任意长度:fread() 2.8 使用其他有用的文件函数 2.8.1 查看文件是否存在:file_exists() 2.8.2 确定文件大小:filesize() 2.8.3 删除一个文件:unlink() 2.8.4 在文件中定位:rewind()、fseek()和ftell() 2.9 文件锁定 2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 3.2.2 访问数组的内容 3.2.3 使用循环访问数组 3.3 使用不同索引的数组 3.3.1 初始化相关数组 3.3.2 访问数组元素 3.3.3 使用循环语句 3.4 数组操作符 3.5 多维数组 3.6 数组排序 3.6.1 使用sort()函数 3.6.2 使用asort()函数和ksort()函数对相关数组排序 3.6.3 反向排序 3.7 多维数组的排序 3.7.1 用户定义排序 3.7.2 反向用户排序 3.8 对数组进行重新排序 3.8.1 使用shuffle()函数 3.8.2 使用array_reverse()函数 3.9 从文件载入数组 3.10 执行其他的数组操作 3.10.1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev() 3.10.2 对数组的每一个元素应用任何函数:array_walk() 3.10.3 统计数组元素个数:count()、sizeof()和array_count_values() 3.10.4 将数组转换成标量变量:extract() 3.11 进一步学习 3.12 下一章 第4章 字符串操作与正则表达式 4.1 创建一个示例应用程序:智能表单邮件 4.2 字符串的格式化 4.2.1 字符串的整理:chop()、ltrim()和trim() 4.2.2 格式化字符串以便显示 4.2.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值