PHP
标识符/关键字/数据类型
标识符:其实标识符就是变量的名称,函数与类的名称也是标识符。PHP中标识符的规则:
1.标识符可以是任意长度的字母、数字、下划线,且不得以数字开头。
2.PHP中标识符是区分大小写的,但函数名是个例外。
3.变量名可以与函数名相同。但应尽量避免。
4.不能创建与已有函数同名的函数。
值得注意的是PHP不要求在使用前就一定要声明标识符;
PHP有很多内置的标识符,例如:$_REQUEST,$SERVER等等, 这些标识符都和和JS中的方法例如(alert(),indexOf...)一样会实现一些功能,做一些事情,这些东西我们可以把它理解为一个工具,比如菜刀、螺丝刀,指甲刀,都是用来做某些事情的。
关键字:
共有85个关键字,这些关键字都会实现一些功能; 类似于js中的typeof,这里我们可以看到很多熟悉的身影; 例如 case break continue ..这些针对循环的关键字;
and or xor __FILE__ extends __LINE__ array() as break case class const continue declare default die() do echo else elseif empty() enddeclare endfor endforeach endif endswitch endwhile eval() exit() extends for foreach function global if include include_once isset() list() new print require require_once return static switch unset() use var while __FUNCTION__ __CLASS__ __METHOD__
final(PHP 5) php_user_filter(PHP 5) interface(PHP 5) implements(PHP 5) exception(PHP 5) public(PHP 5) private(PHP 5) protected(PHP 5) abstract(PHP 5) clone(PHP 5) try(PHP 5) catch(PHP 5) throw(PHP 5) this(PHP 5 only)
输出方法echo和print
echo的速度快于print ,echo没有返回值,而print有返回值,且返回值总为1。 <?php echo 'hello word<br>'; print 'hello word'; ?> 输出结果为:hello world hello world die() >> 输出一条消息,并退出当前脚本。//相当于 return的结束当前函数的功能
函数
其实PHP最经典,也是最核心的地方就是函数,PHP提供了超过一千种內建函数,参考手册点击前往;
作用域: 1.局部变量; 函数中的参数也是局部变量; <?php $x=5; // 全局变量 function myTest(){ $y=10; // 局部变量 echo "<p>测试函数内变量:<p>”; echo "变量 x 为: $x”; echo "<br>”; echo "变量 y 为: $y”; } myTest(); echo "<p>测试函数外变量:<p>”; echo "变量 x 为: $x”; echo "<br>”; echo "变量 y 为: $y”; ?> 2.全局变量: <?php $x=5; $y=10; function myTest(){ global $x,$y; //利用这个关键字声明的变量是全局变量; $y=$x+$y; } myTest(); echo $y; // 输出 15 ?> 3.Static 作用域(JS中的闭包); 局部变量在运行结束之后会被删除,再次重新声明时会被重新赋值,但是static类变量不会,他会一直存在于php的变量中; <?php function fnName(){ static $x = 11; echo $x; $x++; } fnName(); fnName(); ?>
数组
1.什么是数组? 用来储存多个数据的数据类型; 2.创建数组: $arr = array(1,2,3,4,5); 3.使用数组: $arr[0] //1 $arr[1] //2 手动数组赋值: $arr[0] = 11; 数组相关方法: 获取数组长度:count()函数; count($arr);//返回数组长度; 这样我们就可以写for循环了,数组中的内容我们就可以遍历出来了; for($x = 0 ; $x < count($arr) ; $x++){ echo $arr[$x]; } php关联数组:(用=>链接起来) $testArray = array('name' => 'liyang','age' => 18 ); echo 'liyang age is '.$testArray['age']; 数组排序: sort() :升序排列; rsort() :降序排列; 遍历关联数组:foreach(); foreach()第一个参数为数组>> foreach($arr); foreach()第二个参数为关键字as代表在数组中找到的值赋给后面的变量 >> foreach($arr as); foreach()第三个和第四个参数为key和value ;也就是关联数组中的键和值 用 => 链接 >> froeach($arr as $key => value); $arr = array('firstName' => 'yang', 'lastName' => 'huaizhi’); foreach ($arr as $key => $value) { echo $key.'<br>'; echo $value.'<br>'; } foreach() 会执行两次,因为数组中有两对数据,如果数组中的数据有n个那么foreach就执行n次; 键值一一对应,根据颜色来查看;
对象
1.类与对象; <?php class show{ var $hello = "hello”; function showMe(){ echo $this->hello . " world"; } } $me = new show(); $me -> showMe(); ?> PHP中 用class 命名一个对象, 这个对象里面可以有属性和方法, 属性的命名方式为 var $变量名 = 变量值; 在类中使用这个变量的时候使用 $this 指向当前类。 $this -> 变量名(直接写变量名); 实例化类的时候,用new关键字; 调用内部方法的时候 使用 ->
返回JSON格式数据
json_encode()方法进行json格式的转码;
接收一个关联数组,返回值就是json格式的数据
作用:就是将关联数组转换成json格式的数据
数据库
数据库是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以我们使用关系型数据库管理系统,来存储和管理大量的数据。
所谓关系型数据库,是建立在关系模型基础上的数据库,借助与集合代数等数学概念和方法来处理数据库中的数据。
其特点为:
1.数据以表格形式出现;
2.每行为各种记录的名称;
3.每列为记录名称所对应的数据域;
4.许多行和列组成一张表单;
5.若干的表单组成database
数据库:数据库是一些关联表的集合;
数据表:表是数据的矩阵,在一个数据库中的表看起来像是一个简单的电子表格;
列:一列数据元素,包含了相同的数据;字段
行:一行记录,是一组相关的数据;记录
主键:是唯一的,一个数据表只能包含一个主键,可以用主键查询数据;
MySQL是一个开源的关系型数据库管理系统。目前属于Oracle公司。
数据库中的数据类型
整型:
类型 | 存储范围 | 字节 |
TINYINT |
有符号值:-128到127(-2^7到2^7-1)
无符号值:0到255(0到2^8-1)
|
1 |
SMALLINT |
有符号值:-32768到32767(-2^15到2^15-1)
无符号值:0到 65 535(0到2^16-1)
|
2 |
MEDIUMINT |
有符号值:-8388608到8388607(-2^23到2^23-1)
无符号值:0到 16 777 215(0到2^24-1)
|
3 |
INT |
有符号值:-2147483648到2147483647(-2^31到2^31-1)
无符号值:0到 4 294 967 295(0到2^32-1)
|
4 |
BIGINT |
有符号值:-922337203685477808到922337203685477807(-2^63到2^63-1)
无符号值:0到 18 446 744 073 709 551 615(0到2^64-1)
|
8 |
浮点型
类型 | 存储范围 | 字节 |
FLOAT(4,1) |
有符号:(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
无符号:0到(1.175 494 351 E-38,3.402 823 466 E+38)
|
4 |
DOUBLE |
有符号: (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
无符号: 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
|
8 |
日期时间型:
类型 |
大小
(字节)
|
范围 | 格式 | 用途 |
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 |
1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
|
YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符型:
类型 | 大小 | 用途 |
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
在PHP中使用MySQL
连接数据库管理系统函数: $link = new mysqli(host,username,password,dbname); 参数释义: host,mysql的主机名或ip地址 usernane,mysql用户名 pasword,mysql密码 dbname,要操作的数据库名 返回值: 当连接成功时返回连接标识符 当连接失败时返回false 连接失败: echo $link->connect_error; 设置字符集: $link->set_charset("utf8"); 查询语句(执行一条sql语句): $link->query(sql命令); 插入数据: $query1 = "insert tb_name (字段名) values(对应值)"; $link->query($query1); 更新数据: $query2 = "update tb_name set 字段名=值 where 条件"; $link->query($query2); 删除记录: $query3 = "delete from tb_name where 条件" $link->query($query3); 查询记录: $query4 = "select * from tb_name"; $res = $link->query($query4); 索引数组+关联数组查看数据:$res->fetch_array() 索引数组查看数据:$res->fetch_row(); 关联数组查看数据:$res->fetch_assoc(); √ 对象方式查看数据:$res->fetch_object(); 以上四种方式每次执行返回一条记录的数据,可配合循环多次执行,查询所有数据 断开数据库的函数: $link->close(); 断开连接 程序执行完毕自动断开,可省略不用
插入记录(创建字段下的数据):
INSERT tb_name (col_name,...) VALUES(val,...);
查找记录:
SELECT col_name,... FROM tb_name;
更新记录UPDATE:
UPDATE tb_name SET age = age + 5, sex = 2 WHERE username='TOM’;
删除记录DELETE:
DELETE FROM tb_name WHERE id=2;
排序:SELECT * FROM stu ORDER BY 笔试 LIMIT 0,8