一.重要函数总结
1.数组函数的概述
Array_reverse($arr); 翻转数组的值,其索引不翻转
Array_reverse($arr,true);翻转数组的值,其索引也发生了翻转
Array_push($arr,'北'); 作用是往数组的尾部压入单元。返回值是: 压入单元成功后,数组的单元个数。/在数组的末尾添加一个值
Array _pop($arr); 弹出并返回数组的最后一个单元,并且数组的长度减一 /在数组的末尾移除一个值
Array_shift($arr); 将数组开头的单元移除数组
Array_unshift($arr,’bei’); 在数组的开头插入一个或多个单元
Array_merge($arr1,$arr2);合并一个或多个数组
Array_unique($arr);移除数组中重复值
Array_count_values($arr);统计数组中所有值出现的次数
Array_sum($arr);计算数组中所有值得和
Array_diff($arr1,$arr2);计算数组的差集
Array_diff_assoc($arr1,$arr2);根据索引来计算数组的差集
Array_intersect($arr1,$arr2);计算数组的交集
Array_intersect_assoc($arr1,$arr2);根据索引来计算数组的交集
Array_key_exists(‘键’,$arr);检查给定的键名和索引是否在数组中/key_exists();
List();给多个变量赋值,即把数组的多个单元分别赋给多个值
Array_filter(‘输入的数组’,’自定义的函数名’)用回调函数过滤数组中的元素
list($arr[0],$arr[1],$arr[2]) = array(3=>'赵',1=>'钱',5=>'孙',2=>'李',0=>'燕');
2.字符串函数
addslashes();函数在指定的预定义字符前添加反斜杠, 预定义字符是:单引号/双引号/反斜杠/null ;//防止sql注入
Stripslashes();函数删除由addslashes()函数添加的反斜杠;
Htmlspecialchars();将字符串中一些字符转换为HTML实体;//防止XSS攻击
Htmlspecialchars_decode();将HTML实体转换为字符
Implode(‘-’,$arr) 将数组以特定的分隔符转变为字符串;
Explode() 将字符串用分割符转变成一个数组;
Str_replace(‘要替换的字符’,’替换字符’,’包含要替换的字符’); 匹配和替换字符串;
Trim();去除字符串两边的空白字符或者指定的字符;
Ucfirst();把字符串中的首字符转换为大写
Ucwords();把字符串中每个单词的首字符转换为大写
Str_repeat(‘字符串’, 5);把字符串重复指定的次数
Strtoupper();把字符串转换为大写
Strtolower();把字符串转换为小写
Strrev();字符串翻转
Mb_substr(‘字符串’,’开始位置’,’截取的长度’,’utf-8’);截取中文字符无乱码
Substr(‘字符串’,’开始位置’,’截取的长度’);截取字符串
Str_split($str,2);将字符串分割成数组;其中最后一个参数代表分割数组中值得个数
strrchr() 函数查找字符在指定字符串中从正面开始的最后一次出现的位置
is_readable() 函数判断指定文件名是否可读
Str_pad(‘要填充的字符串’,’填充的长度’,’填充的位置(STR_PAD_RIGHT/STR_PAD_LEFT/STR_PAD_BOTH)’)函数 把字符串填充为新的长度
二.mysql数据库的操作
1.数据库cmd的常用命令
a.配置计算机的环境变量path中变量值添加:D:wampinmysqlmysql5.5.8in;
B.登录mysql命令:mysql -hlocalhost -uroot -p 123
C.显示数据库:show databases
D.创建数据库:create database shujuku
删除数据库:drop database shujuku
F.选择数据库:use shujuku
设置cmd的显示编码:set names gbk;
G.查看表:show tables;
H.查看表结构:desc aa(表名);
I.创建表:create table if not exists `aa`(id int auto_increment primary key, user_name varchar(20) not null default ‘’ comment”用户名”);
J.查看创建的表:show create table aa;
K.修改表名:alter table aa rename aa1;
L.修改字段的数据类型:alter table aa modify id bigint; 将id的int类型改为bigint
M.修改字段名:alter table aa change id iid bigint ;将id这个字段更名为iid
N.添加字段:alter table aa add name1 varchar(20) not null;
O.删除字段:alter table aa drop name1;
P.删除外键约束:alter table aa drop foreign key;
删除主键约束:alter table aa drop primary key;
Q. ---MyISAM引擎
CREATE TABLE TEST
(
ID int unsigned not null auto_increment,
name varchar(10) not null,
key(name,id)
)engine=MYISAM auto_increment=100;
---innodb引擎
CREATE TABLE TESTIdentity
(
ID int unsigned not null auto_increment,
NID INT UNSIGNED ,
name varchar(10) not null,
key(id)
)engine=INNODB auto_increment=100;
MyISAM和innodb的区别:
1.Innodb不支持全文索引 MyISAM支持全文索引
2.Innodb支持事务和外键
3.MyISAM是表锁 innodb是行锁
4.执行大量的select 时用MyISAM 执行大量的insert和update时用innodb
2.数据类型
Mysql中的数据类型可以指定显示宽度
Tinyint:-128-----127
0------255
Smallint:-32768----32767
0---------65535
Mediumint:0-----16777215
Int: 0-----4294967295
Bigint:最大值
Float:单精度浮点型数据
double:双精度浮点型数据
Decimal:自定义精度浮点型数据 decimal(10,2);
Char();固定长度的字符串 最大255字符
Varchar();可变长度的字符串 255
Test 最大长度限制的可变长度
Date 以yyyy-mm-dd格式的日期
Time 以hh:mm:ss格式的时间
Datetime 以yyyy-mm-dd hh:mm:ss格式的日期 时间
Timestamp 以yyyy-mm-dd hh:mm:ss格式的日期 时间
Enum 一个数组,用户可从中选择其中一个
3.数据库查询
Select 属性列表 from 表名 [where 条件表达式] [group by 属性名 [having 条件表达式]] [order by 属性名 [asc|desc]] [limit(0,2)];
1.常用查询:
Select * from 表名;
Select name from 表名 where name=’张三’;
Select name from 表名 where name=”” AND id=””;
Select name form 表名 where name=”” OR id=””;
Select id,name from 表名 where id IN(101,102);
Select id,name from 表名 where id NOT IN (101,102);
Select id,name from 表名 where price (not)BETWEEN 2 AND 20;
Select * from 表名 where city IS (NOT) NULL
select *,IF(sva=1,’男’,’女’) as 别名 from 表名 where id=1;
SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
2.带like的字符匹配查询
Select id,name from 表名 where name like ‘s%’;
3.distinct去除数据库重复的
Select distinct name from 表名;
4.group by分组
Select id,count(1) AS 别名 from 表名 group by id;
5.过滤分组
Select id, group_concat(name) AS 别名 from 表名 group by id having count(name)>2;
6.limit 限制查询结果数量
Select * from 表名 limit 0,3;
7.order by 排序查询
Select * from 表名 order by 字段名 desc(asc);
8.正则表达式查询
Select * from 表名 where name REGEXP ‘^b’;
拓展:字符“^”匹配以特定字符或者字符串开头的文本
字符“$”匹配以特定字符或者字符串结束的文本
字符“.”匹配任意一个字符
星号“*”匹配前面的字符任意多次,包括0次。加号“+”匹配前面的字符至少一次
方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本
“[^字符集合]”匹配不在指定集合中的任何字符
“字符串{n,}”,表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。
9.GROUP_CONCAT 将某一字段的值按指定的字符进行累加,separator是分割符
select group_concat(f_a separator '_') from 表名 group by f_b;
separator 是一个关键字,后面跟着要进行分隔的字符
4.数据库的添加,更新和删除
添加:INSERT INTO 表名(id,NAME,age,info) VALUES (NULL,'feicy',33,'student');
更新:UPDATE 表名 SET name ='police' WHERE id=17;
删除: DELETE FROM 表名 WHERE id=17;
索引
索引的优点:
1、通过创建唯一索引,保证数据库表每行数据的唯一性
2、大大加快数据查询速度
3、在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间
索引的缺点:
1、维护索引需要耗费数据库资源
2、索引需要占用磁盘空间,索引文件可能比数据文件更快达到最大文件尺寸
3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响
索引的分类
1、普通索引和唯一索引
主键索引是一种特殊的唯一索引,不允许有空值
2、单列索引和复合索引
单列索引只包含单个列
复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合
3、全文索引
全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在
CHAR、VARCHAR、TEXT类型列上创建。MYSQL只有MYISAM存储引擎支持全文索引
4、空间索引
空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,
分别是GEOMETRY、POINT、LINESTRING、POLYGON。
MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须
将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
普通索引
CREATE TABLE `book` (
`bookid` INT(11) NOT NULL,
`bookname` VARCHAR(255) NOT NULL,
`authors` VARCHAR(255) NOT NULL,
`info` VARCHAR(255) DEFAULT NULL,
`comment` VARCHAR(255) DEFAULT NULL,
`year_publication` YEAR(4) NOT NULL,
KEY `year_publication` (`year_publication`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1
唯一索引
CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`name` char(30) NOT NULL,
UNIQUE KEY `UniqIdx` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
复合索引
CREATE TABLE `t3` (
`id` int(11) NOT NULL,
`NAME` char(30) NOT NULL,
`age` int(11) NOT NULL,
`info` varchar(255) DEFAULT NULL,
KEY `MultiIdx` (`id`,`NAME`,`age`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
全文索引
CREATE TABLE `t4` (
`id` int(11) NOT NULL,
`name` char(30) NOT NULL,
`age` int(11) NOT NULL,
`info` varchar(255) DEFAULT NULL,
FULLTEXT KEY `FulltxtIdx` (`info`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
空间索引
CREATE TABLE `t5` (
`g` GEOMETRY NOT NULL,
SPATIAL KEY `spatIdx` (`g`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8
数据库的备份
数据库导出
Mysqldump -hlocalhost -uroot -p 数据库名称 [表名称] > C:/filename.sql;
数据库的导入
Mysqldump -hlocalhost -uroot -p 数据库名 <C:/filename.sql;
登录mysql后导入sql的命令
Source:”路径名”/filename.sql;
utf8mb4字符集
utf8mb4 字符集:支持 emoji 表情符号
限制:需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错
php中的文件上传处理
Form表单中的enctype 属性
要完成文件上传处理首先要在html的表单中的enctype属性改为multipart/form-data
upload_tmp_dir:当进行文件上传时,临时文件存放的目录,对于 Linux/UNIX 用户来说,要特别注意,当前 PHP 用户必须拥有这个目录的写权限。 upload_max_filesize:这个配置项指定了允许上传文件大小的最大值, php.ini 默认值是 2M。
全局变量$_FILES
$_FILES[‘input里面的name值’][‘name’];表示客户端文件的原始名称
$_FILES[‘input里面的name值’][‘type’];表示上传的文件类型
$_FILES[‘input里面的name值’][‘size’];表示已上传的文件的大小
$_FILES[‘input里面的name值’][‘tmp_name’];表示文件上传后,在服务器端存储的临时文件
$_FILES[‘input里面的name值’][‘error’];表示文件上传的相关错误信息
Move_uploaded_file(filename,destination);
Move_uploaded_file()函数 将上传的文件移动到指定的目录下
Filename:合法的上传文件
Destination:移动后的目标文件
PHP中强制类型转换
(int)--转换为整型
(bool)--转换为bool型
(float)--转换为浮点型
(string)--转换为字符串型
(array)--转换为数组
(object)--转换为对象
PHP中三目运算
条件运算符( ? :)的用法是:expr1 ? expr2 : expr2可以看出,条件运算符有 3 个操作数,所以它是三目运算符。它的计算规则是:如果表达式 expr1的值为 TRUE,那么整个表达式的值就取 expr2 的值,否则,就取 expr3 的值。
下面的代码使用条件运·86·算符来获取两个数中最大的那个数。
$max = ($a>=$b) ? $a : $b当表达式$a>=$b 为 TRUE,那么整个表达式的值就是变量$a 的值,这意味着,会将$a 的值赋给变量$max,从而取得$a 和$b 之间较大的那个数
break 和 continue 语句
continue 语句和 break 语句的区别是, continue 语句只是结束本次循环,而 break 语句是终止整个循环的执行,不再做条件的判断。
代码break 语句的使用
<?php
define(PI,3.14);
for($r=1;$r<=10;$r++){
$area = PI * $r * $r;
if($area>100)
break;
echo "r=$r, area=$area";
echo "<br/>";
echo "<br/>";
}
?>
上述程序计算半径 1 到 10 的圆的面积,直到面积大于 100 时为止。当面积 area>100 时,执行 break语句,中断循环,不再执行剩余的几次循环。程序的执行结果如图 2.25 所示。从程序的执行结果可以看出, for 循环只执行了 5 次就因 break 语句而退出,剩下的 5 次循环没有执行。
代码continue 语句的使用
<?php
for($a=100;$a<=200;$a++){
if($a%3==0)
continue;
echo $a;
echo "<br/>";
}
?>
上述程序将 100 到 2000 之间不能被 3 整除对数输出。当$a 能被 3 整除时,执行 continue 语句,结束本次循环,继续执行 for 循环语句。只有$a 不能被 3 整除时,才使用 echo 语句将该数字输出。
PHP 函数的传值与传址
传址方式传递函数参数
<?php
$i = 100;
function func(&$n){
$n = $n+100; //因为传址传入变量$i,所以这里的变量$n 引用的就是$i 本身,此句等价于$i = $i+100
}
echo "调用函数 func 前: $i=$i";
echo "<br/>";
echo "<br/>";
func($i); //将$i 传入函数 func,因为是传址方式,所以此时函数内的变量$n 就是变量$i
echo “调用函数 func 后: $i=$i";
?>
传值方式传递函数参数
<?php
$i = 100;
function func($n){
$n = $n+100;
}
echo "调用函数 func 前: $i=$i";
echo "<br/>";
echo "<br/>";
func($i);
echo "调用函数 func 后: $i=$i.<br/>";
?>
函数和变量作用域
变量作用域演示程序
<?php
$var = "some text";
function test(){
$var = "some text in function";
echo '这是局部变量$var: '.$var;
}
echo '这是全局变量$var: '.$var;
echo '<br/>';echo '<br/>';
test();
?>
在函数内部使用 global 关键字
<?php
$a = 1997;
$b = 1998;
function sum(){
global $a,$b;//声明全局变量
$b = $a + $b; //3995
}
echo '$a='.$a; //1997
echo '<br/>';
echo '$b='.$b; //1998
echo '<br/>';
echo '<br/>';
sum();
echo '$a + $b = '.$b; //1998
?>
PHP 的预定义变量
$GLOBALS:包含指向当前程序中全局范围内有效的变量,它是一个数组,该数组的索引(或键名)就是全局变量的名称。
$SERVER:该全局变量是一个包含诸如头信息、路径和脚本位置的数组。
常见的$_SERVER 的元素包括 PHP_SELF(当前正在执行的脚本的文件名)、
SERVER_ADD(当前执行脚本所在服务器的 IP 地址)、
SERVER_NAME (当前执行脚本所在服务器主机的名称)、
DOCUMENT_ROOT(当前脚本所在文档的根目录)、
SCRIPT_FILENAME(当前执行脚本的绝对路径)、
SCRIPT_NAME(当前脚本的路径)、
HTTP_REFERER(链接到当前页面的前一页面的 URL)、
REQUEST_URI(访问此页面所需的 URI)等。
$_GET:通过 HTTP 的 GET 方法提交至脚本的表单变量。
$_POST:通过 HTTP 的 POST 方法提交至脚本的表单变量。
$_FILE:通过 HTTP 的 POST 文件上传提交至脚本的变量。
$_COOKIE:通过 HTTP 的 Cookies 方法提交至脚本的变量。
变量的类型
判断变量的类型
is_integer 判断变量是否为整数.
is_string 判断变量是否为字符串。
is_double 判断变量是否为浮点数。
is_array 判断一个变量是否为数组。
设置变量的类型
Settype 设置一个变量的类型
$a=100;
Settype($a,’string’);//此时变量a被设置为字符串类型
获取变量的类型
Gettype()取得一个变量的类型
$a=100;
Gettype($a);//获取变量a的类型
escape() 函数可对字符串进行编码
Document.cookie;//js中获取cookie
Sprintf()和printf()函数区别
sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,
<?php
$number = 2;
$str = "Shanghai";
$txt = sprintf("There are %u million cars in %s.",$number,$str);
echo $txt;
//There are 2 million cars in Shanghai.
?>
printf是将一个格式化的字符串输出到屏幕。
<?php
$number = 9;
$str = "北京";
printf("在%s有 %u 百万辆自行车。",$str,$number);
//在北京有 9 百万辆自行车。
?>
获取url地址后面的后缀名
①
<?php
$url = "http://www.abc.com/abc/de/fg.php?id=1";
//这个是自己写的
function getUrl($url) {
$date = explode('?', $url);
$date = basename($date[0]);
$date = explode('.', $date);
return $date[1];
}
echo getUrl($url);//php
②
<?php
$file=”www.baidu.com”;
PHP.ini中的有关配置
Register_globals=off 如果设置为on,表单,url会话和cookie变量会成为全局变量
Magic_quotes_gpc=off 这个设置会自动转义提交的数据,其在开发代码应根据需求对数据经行转义,而不能依赖于这个设置,因此要将其禁用
自动打印
function window.onload() {
factory.printing.header = "" //页眉
factory.printing.footer = "" //页脚
factory.printing.portrait = false //true为纵向打印,flase为横向打印
factory.printing.leftMargin = 0 //左页边距
factory.printing.topMargin = 0 //上页边距
factory.printing.rightMargin = 0 //右页边距
factory.printing.bottomMargin = 0 //下页边距
}