搭建PHP开发环境 php
一、理解BS/CS架构;css
答:B/s:browser/server:服务器与浏览器架构的软件,特色:依靠浏览器为依托,不须要安装客户端,打开网页就能使用的软件。例如:京东、淘宝、百度html
C/s:client/server:客户端与服务器架构的软件,特色:必需要安装客户端才能使用的软件。例如:QQ、酷狗java
二、理解一个网站从请求到响应的交互过程mysql
答:客户端-->浏览器-->服务器-->php-->Mysql 一步步返回linux
说明:当用户在浏览器的地址栏里输入域名或者ip时,浏览器会承载着这个请求找到指定的服务器,服务器根据请求的语言,调用相对应的服务器端脚本语言,服务器端语言调用数据库没数据库将查询结果返回给服务器端,服务器再承载着这个结果返回给浏览器,插入到页面的指定位置,从而完成整个响应过程。nginx
三、理解http协议程序员
答:超文本传输协议,特色是:无状态的,是万维网发布的一个规则 上网的时候就是:http://域名。web
四、掌握如何搭建WAMP(单独安装Apache MySQL PHP);(搭建WAMP环境的步骤)sql
答:
① 在任意一个盘符下新建一个名为web的文件夹,在里面分别新建三个文件夹:Apahce、mysql、php。
② 首先安装Apache,安装完成后,在浏览器的地址栏里输入localhost或者是127.0.0.1页面显示It works!代表安装成功
③ 安装PHP,让Apache加载php,安装完成重启服务器。
④ 安装MySQL,安装完成使用命令net start mysql来启动服务
⑤ 配置php,打开php的错误提示,配置默认时区,打开相对应的扩展,配置完成重启服务,编写程序输出hello world!整个安装完成。
五、掌握Apache与PHP的关系,如何配置可以解析PHP;
答:Apache是一个服务器,在客户端和服务器端语言之间进行服务的,php是一个服务器端的嵌套在html里的解释性脚本语言,它要想在浏览器里正常运行必须依靠Apahce做为支撑,没有了php,Apahce能正常运行,没有了php,php代码在浏览器里是没法运行的,可是php有自带的命令行,它是能够运行的。
在Apache的主配置文件httpd.conf里加上:
PHPIniDir "E:/web/PHP/php.ini"
LoadModule php5_module "E:/web/PHP/php5apache2_2.dll"
这就是Apache加载php
六、掌握如何找到服务器所使用的php.ini所处的位置;
答:编写程序输出:phpinfo()函数将php的全部信息打印在了浏览器上,其中有一个选项是说明Apache加载的php的配置文件,php的配置文件名是:php.ini
七、掌握如何找到php的扩展目录,并开启某些PHP扩展;
答:在php.ini里有这个选项:extension_dir ,把这个选项的前面的分号去掉,而后再后面写上php的扩展目录所在具体路径,例如:extension_dir = "E:/web/php/ext" 重启服务器才会生效
八、了解PHP文件标签,可以编写一个hellord输出;
答:<?Php echo “hello world!”;?> 要想使用php的短标记:修改php.ini里:short_open_tag,把前面的分号去掉,把参数写成on,例如:short_open_tag = On 重启服务器才会生效
九、了解端口的概念,知道(Apache、MySQL)服务器的默认端口;
答:端口就是一个软件的标记,至关于门牌号。Apache的端口号是:listen 80,mysql的端口号是:port 3306 php没有本身的端口号默认和服务器保持一致 端口能够修改,修改后要重启服务器,并在之后的访问中加上端口号,例如:http://www.baidu.com:8080
十、理解网站,掌握区分动态网站与静态网站
答:网站是由html、css、js和服务器端语言以及数据库进行动态开发的B\S架构的软件。
静态网站:只能浏览不能进行增删改查操做的网站;
动态网站:凡是与数据库交互的网站都是动态网站;
十一、掌握serverroot,servername,DocumentRoot
答:serverroot:服务器所在的目录
Servername:网站的域名
DocumentRoot:网站存放的根目录。刚刚安装完成后,默认的路径是:盘符:/web/Apache/htdocs,固然这个位置能够更改
十二、理解客户端、服务器端、浏览器、服务器
答:客户端:就是用户上网的终端,也就是谁上网谁就是客户端
服务器端:就是服务器所在的终端
浏览器:就是用户用来上网的一种工具
服务器:给用户上网提供服务和给服务器端语言提供运行平台的终端
PHP基本语法
一、理解PHP的前因后果
答:上网查找前因后果。
Php特色:开源、免费、跨平台,功能强大,执行效率高。
Php环境分为:WAMP和LAMP
WAMP:windows+Apache+Mysql+php
LAMP:linux+Apache+Mysql+php
注:php不只仅只支持Apahce做为服务器还有不少服务器他均可以的,例如:nginx,等。还有数据库,现今全部的数据库php都能连上。例如:SQLserver、oracl等。
二、理解PHP与其余语言(java、asp、.net平台)的异同(跨平台、执行效率、开发效率、稳定性、开源、移动互联)
答:java:uninx+tomcate+oracl+javaee
.net:windows+IIS+SQLserver+ASP
PHP:
WAMP:windows+Apache+Mysql+php
LAMP:linux+Apache+Mysql+php
Php很是强大,主要作web开发,开发起来效率高,用户体验好,服务器优化性能好,是当今开发网站首选语言。
三、掌握编写代码时正确使用注释
答:php的单行注释; // # 多行注释: /* */
注:写注释是一个程序员必备的基本素质,写注释能让代码一目了然,每一个php文件的功能更加清晰的展示给其余开发者,学会写注释能帮助你高新就业!
四、掌握isset()、unset(),empty()
答:此处遇到了函数,函数查手册,三要素:
① 首先明白函数的功能
② 明白函数有几个参数
③ 明白函数的返回值
Isset():检测变量是否被设置,参数只有一个就是变量名,返回值若是设置了,返回true,不然返回false
Unset():销毁给定的变量,也只有一个参数就是变量名,没有返回值
Empty():判断变量是否为空,若是为空返回为true,不然返回false,要是想判断非空就用:!Empty(变量名)
五、掌握可变变量,变量的引用(值传递与地址传递)
答:值传递就是将一个变量的值赋值给另外一个变量,其中任何一方的改变不会影响另外一方,引用赋值是在直接赋值的基础上加一个&,这时两变量就指向了同一内存空间,任何一方的改变都将牵动另外一方。
例如: $b=20; $a=$c=$b; $c=30; echo $a; 结果是:20
例如:$a=10; $b=&$a; $c=&$b; $a++; echo $c; 结果是:11
六、掌握变量的声明以及命名
答:① 必须由$修饰开头
② 变量名严格区分大小写
③ 变量能够是中文,但通常不用
④ 不能包含特殊字符,由字母数字下滑线组成,不能以数字开头
声明 :$a=10; $b=”erwerwer”
七、掌握变量的八大类型
答:四种标量数据类型:整型、实型,字符型,布尔型
两种特殊数据类型:资源、空类型
两种复合数据类型:数组、对象
八、掌握var_dump()、echo、print_r():
答:echo :输出一个或者多个的字符串
Print_r():打印关于变量的易于理解的信息。
Var_dump():打印变量的详细信息
九、掌握在各类变量类型之间进行转换
答:强制转换和自动转换
例如:强制转换:$a=10; echo (float)$a
例如:自动转换:$a=10; $a=1.2; var_dump($a) 此时的$a为浮点型
十、掌握常量的定义和使用
答:define(“ 常量名”,”常量值”) 例如:define(“B”,10); echo B; 结果是:10
注:常量一旦被定义不能被修改
例如:define(“A”,10); @define(“A”,20); echo A; 结果是:10
十一、掌握常量和变量的区别
答:常量就是在程序运行过程当中值不能发生改变的量,一旦被定义不能被修改
变量就是在程序运行过程当中值能够发生改变的量,变量的数据类型根据值作决定
十二、掌握使用各类运算符和表达式 (算术运算符、自增自减运算符、比较运算符、字符串链接运算符、逻辑运算符、错误控制运算符和表达式)
答:算术运算符:+ - * / % += *= -=
逻辑运算符:! && ||
比较运算符:> < >= <= != == ===
注:双等号只比较两边的值是否相等 三等号:既判断两边的值也判断两边的数据类型
自增自减运算符: ++ --
字符串链接运算符: .
错误控制运算符: @
表达式: ? :
PHP语言结构
一、php的语言结构有哪些
答:顺序结构、选择结构、循环结构
二、掌握if…else if…else...if的基本语法;
答:if(条件){ 判断结果} if(判断条件){确定的结果}...elseif{否认的结果}else{两个条件都没成立}
二、掌握switch … case 语法
答:case后面必须有break断开,不然就会继续执行,一直到遇到break为止或者一直到结束
三、掌握for循环
答:for(初值;终值;步长){循环体}
四、掌握特殊控制语句(break continue)
答:break是结束本层循环,continue是结束本次循环进行下一次循环
例如:$a=0;
for($i=1;$i<5;$i++){
If($i==2){
continue;
}
For($j=1;$j<=3;$j++){
If($j==2){
Break;
}
$a++;
}
} echo $a; 结果是:3
五、掌握while/do…while的基本语法;
答:while是先判断循环条件,再执行循环体,do...while是先执行循环体,再判断循环条件,当循环条件不成立时,do...while比while多循环一次
例如:$a=3;
Do{
$a++;
}while($a<2);
While{$a<3}{
$a++;
}
Echo $a; 结果是:4
六、灵活运用函数的定义与调用
答:定义函数:function 函数名(形参){函数体 return 返回值} 调用函数:fun(实参)
注意:在函数体内,若是遇到了return 将返回该处的值,下面的代码将再也不执行
例如:function fun(){
global $a;
$a=1;
$a++;
Return $a;
++$a;
}
fun();
echo $a; 结果是:2
七、灵活运用变量的做用域
答:局部变量(就是在函数体内定义的变量,做用域是整个函数体内部,要想在函数提内部使用全局变量须要加global声明)全局变量(就是在函数体外定义的变量,做用域是整个php脚本)静态变量(static定义的变量,他保存的数据是静态的也就是不变的)
八、掌握参数的传递(传值、传地址)
答:值传递是以形参接收实参的值的方式进行传递的,在没有声明全局变量的状况下,形参作出的修改不会影响函数体外实参的值,地址传递就是在值传递的基础上加&,此时形参与实参指向同一内存空间,形参作出的修改会直接影响函数体外实参的值,无论有没有global。
例如:function fun($a,&$b){
Global $a;
$a+=$b;
$b+=$a;
}
Fun(4,5);
Echo $a.’#’.$b; 结果是:9#14
九、简单运用递归函数
答:递归就是函数自身调用自身,递归精度大,可是耗费资源
例如:求n!
Function fun($n){
If($n==1){
Return 1;
}Else{
Return Fun($n-1)*$n
}
}
Echo fun(5); 结果是:120
十、掌握include require include_once require_once的区别
答:当程序遇到一个致命性错误时,include会产生一个警告,而程序继续执行;require会终止执行;include_once()和require_once()都是仅仅对一个文件包含一次的意思,为了不屡次包含同一个文件产生的错误,咱们用include_once()和require_once()来代替他们
字符串
一、字符串的定义
答:单引号,双引号,定界符
例如:$a=’aaaaa’; echo $a; 结果是:aaaaa;
$a=”sdsadfsfd”; echo $a; 结果是:sdsadfsfd
$b=10;
$a=”$b 20”; echo $a; 结果是:10 20
$a=10;
定界符格式:<<<大写的本身随便定义的格式 字符串 以你本身定义的格式顶头结尾
$str=<<<HELLO
QWERQWRQWRQ $a WRQWRQWERQWRQWRQWASJFDASJKFGSDOF
HELLO;
echo $str;
二、单引号与双引号的区别
答:双引号解析以$开头的变量名,单引号不解析
三、掌握使用print printf、sprintf输出字符串;
答:print()输出字符串 实际上不是一个函数(它是一个语言结构),所以你能够没必要使用圆括号来括起它的参数列表。
Printf():输出格式化字符串 例如:$a=printf(“%d”,17); echo $a 结果是:172
Sprintf():和Printf()一致
五、掌握字符串处理函数(strlen、substr、strpos、trim、ltrim、rtrim)
$a=’qweqweqweqwe’
Strlen(字符串):求字符串长度
Substr(字符串,开始截取的位置,截取的长度【可省,若是省掉就将从开始的位置一直截取到结束】):截取字符串,返回截取后的字符串
例如:有一个url:http://www.php.com/index/ext/index.php.html,回答些列问题:
(1)若是想要获取到.php,怎么办?请你写出你的解题思路和伪代码。
$str=”http://www.php.com/index/ext/index.php.html”;
思路:
① 先将这个url变成一个字符串赋值给一个变量
② 查找x最后一次出现的位置,用strrpos查找;
③ 将查找后的返回值做为截取的第二个参数,也就是截取开始的位置
④ 截取,用substr开始截取,截取的长度为4
⑤ 返回输出
代码:
$index=Substr($str,strrpos($str,”x”)+1,4);
Echo $index;
(2)若是想要获取.html怎么办?写出你的实现思路和伪代码。
思路:
思路:
① 先将这个url变成一个字符串赋值给一个变量
② 查找.最后一次出现的位置,用strrpos查找;
③ 将查找后的返回值做为截取的第二个参数,也就是截取开始的位置
④ 截取,用substr开始截取,不用写第三个参数,直接截取到最后
⑤ 返回输出
代码:
$index=Substr($str,strrpos($str,”.”));
Echo $index;
六、经过结合手册实现以下功能(看到函数能知道功能,知道需求能查到相关函数):
① 将字符串中的换行替换为<br/>
答:str_replace(要替换的值,替换成谁,在谁里替换也就是字符串名):
例如:$a=”hello world!”; echo str_replace(“l”,”Q”,$a); 输出结果是:heQQo worQd!
② 将全部字母转换为大写(小写)
答:strtolower():将整个字符串转换成小写
例如:$str=”HELLO world!” echo strtolower($str); 输出结果是:hello world!
Strtoupper():将整个字符串转化成大写
例如:$str=”HELLO world!” echo strtoupper($str); 输出结果是:HELLO WORLD!
③ 去除字符串两端(左侧、右侧)的空白
答:trim():去除字符串两端的空白字符
例如:$a=” aaa ”; echo trim($a); 结果是:没有空格的aaa
Ltrim():去除字符串左边的空格
Rtrim():去除字符串右边的空格
④ 将字符串中每一个单词的首字母大写、将字符串的首字母大写
Ucfirst():将字符串的首字母大写
Ucwords():将字符串中每一个单词的首字母大写
数 组
一、掌握数组的分类
答:根据类型分:关联数组和索引数组; 根据维度分:一维数组、二维数组、多维数组
定义数组:变量名=array(元素,元素,元素) 或者 $a[]=1; $a[]=4; 不写下标的声明也是能够的,下标就从0开始,只要是带有[]的变量都是数组
例如:$arr=array(1,2,3,4,5);
二、理解索引数组与关联数组,键名与值;
答:索引数组:数组中元素的下表所有是数字的数组,索引数组的下表默认都是从0开始的
例如:$a=array(“a”,”b”);
或者 $a=array(2,4,5,6);
或者 $a=array(1=>2,2=>3)
或者 $a=array(1=>”wqeqwe”,4=>”weqweqwe”)
关联数组:数组元素的下表有一个是字符串的数组
例如:$a=array(“a”=>1111,”b”=>222);
或者 $a=array(“a”=>”hello”,”b”=>”world!”)
或者 $a=array(1,2,3,”name”=>”zhangsan”)
键、索引、下标都是指的是元素的位置
元素指的是数组中的值
三、掌握数组的增删改查,例如如如下状况:
注:凡是涉及数组中的增长、删除、修改这些操做的时候必需要经过更改数组的下标这个值才会发生改变,不然无效。
增长:在数组元素增长的时候,若是数组的下标存在,值将会被覆盖掉
例如:$arr=array(1,2,3,4,5,6)
$arr[] = 'a'; //此时这段代码会将$arr中的1覆盖
$arr['y'][] = 10;
$arr['y']['3'] = 20;
删除:unset(数组名[下标])
从一维数组中删除一个元素(unset($arr[3]))
从多维数组中删除一个元素(unset($arr['3']['7']))
修改:注意,若是修改的下标不存在的时候就变成了追加
如何修改一个一维或多维数组中的值$arr['y']['3'] = 20;
四、掌握一维索引数组和一维关联数组的遍历(也就是循环输出)
答:一维索引数组:
$arr=array(1,2,4,5,6,7,8,9);
//$i表明的是数组的下标,要想在循环里使用某个元素,就用$arr[$i],只写$i,是没意义的
//count是统计数组的长度做为循环的终止条件
For($i=0;$i<count($arr);$i++){
Echo $arr[$i]; //就是将一维索引数组中的元素所有输出在浏览器上
}
一维关联数组:
$arr=array(“name”=>”zhangsan”,”sex”=>”男”);
//关联数组的遍历必须使用foreach,索引数组也可使用foreach
//foreach的格式:
//foreach(数组名 as 键的变量名=>值得变量名){ 循环体} 它同属于循环结构
Foreach($arr as $k=>$v){
Echo $k.“->”.$v; //这就是将数值中的元素输出,格式是:键->值
}
五、掌握二维索引数组和二维关联数组的遍历(也就是循环输出)
答:二维索引数组:(也就是两层array的索引数组)
$arr=array(array(1,2,4,5,6,7,8,9));
//$i表明的是第一个一维数组的下标,$j表明的是数组中的数组的下标,要想在循环里使用某个元素,就用$arr[$i][$j],只写$i,是没意义的
//count是统计数组的长度做为循环的终止条件
For($i=0;$i<count($arr);$i++){
For($j=0;$j<count($arr[$i]);$j++){
Echo $arr[$i][$j]; //就是将二维索引数组中的元素所有输出在浏览器上
}
}
二维关联数组:
$arr=array(array(“name”=>”zhangsan”,”sex”=>”男”),array(“name”=>”lisi”,”sex”=>”男”));
Foreach($arr as $k=>$v){
Foreach($v as $key=>$val){
Echo $key.“->”.$val; //这就是将数值中的元素输出,格式是:键->值
}
}
六、掌握将二维关联数组或者索引数组放入表格里
$arr=array(
array("age"=>"17","sex"=>"女"),
array("age"=>"17","sex"=>"男"),
array("age"=>"20","sex"=>"女"),
);
echo "<table border=1>";
foreach($arr as $val){
echo "<tr>";
foreach($val as $v){
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
七、从数组中查询是否存在某个值(键)(in_array、array_search、array_key_exists)
in_array():查找某个元素手否存在于数组中
Array_seatch():在数组中搜索给定的值,若是存在将返回键名
array_key_exists():判断数组中的键或者索引是否存在于数组中
八、掌握数组与字符串相关函数explode、implode
Explode():将一个字符串根据标记分割成数组
例如:861745122@qq.com 变成 0=>861745122 1=>qq.com
Print_r(Explode(“@”,$str));
Implode():将是一个数组链接成字符串
九、掌握看到以下函数知道以下函数的意思,知道需求可以经过手册查找到相关函数(
array_values():将数组中全部的值返回组成一个索引数组
array_keys():将数组中全部的键返回组成一个索引数组
array_flip():将数组中的键个值进行交换,键名若是存在值将会被替换掉,不存在至关于追加
array_reverse():将数组进行翻转
Count():计算数组的长度
array_count_values():统计数组中相同元素出现的次数,格式为:值-->次数
array_unique():去除数组中的重复项,返回去除后的新数组
Sort():将数组进行从低到高排序(正向)
Rsort():将数组进行从高到低排序(逆向)
Ksort():按照数组的键名进行排序(正向)
Krsort():按照数组的键名进行排序(逆向向)
Asort():将数组进行排序,并保持索引关系
Arsort():将数组进行逆向排序并保持索引关系
array_merge():合并一个或者多个数组
array_rand():随机从数组中产生一个或者多个键组成一个新数组返回
array_sum():计算数组中全部元素的和
Apache服务器配置
一、理解httpd.conf与httpd-vhosts.conf
答:httpd.conf:Apache的主配置文件,httpd-vhosts.conf是配置虚拟主机的文件,要想让Aapche加载此文件,须要在Apache的主配置文件里将#Include conf/extra/httpd-vhosts.conf前面的”#“去掉,去掉后Aapche就加载了此文件,能够在这里面配置虚拟主机
二、经过修改apache的配置禁止或显示目录列表(Options Indexes FollowSymLinks)
答:Options Indexes FollowSymLinks 配置完成的该虚拟主机,在访问的时候能够显示该目录下的全部文件列表
三、Order、Allow、Deny、DocumentRoot、ServerName的做用
答:AllowOverride None:是否容许域名重写 ,None不容许 on 容许 容许后会将网站跟木下的.htacess文件生效
Order:访问 allow 容许deny 禁止 谁在前谁先生效
Allow from all:容许来自一切的访问
DocumentRoot:网站发布根目录
ServerName:设置域名
四、掌握独立完成虚拟主机的配置过程,并深入理解每一步的做用
答:① 找到:C:\Windows\System32\drivers\etc\hosts文件,打开,修改为以下格式:
127.0.0.1 (ip) www.a.com (域名)
② 找到Apache的主配置文件,找到:
#Include conf/extra/httpd-vhosts.conf前面的”#“去掉,去掉后Aapche就加载了配置虚拟主机的文件,能够在conf/extra/httpd-vhosts.conf里面配置虚拟主机
③ 打开:conf/extra/httpd-vhosts.conf
将文件清空,写入:
NameVirtualHost *:80 //无论你配置任何虚拟主机,访问的端口都是80
<VirtualHost *:80> //此虚拟主机
ServerNamelocalhost //访问的网站域名
documentRoot E:\web\Apache\htdocs //网站的存放根目录
</VirtualHost>
<Directory "E:\web\Apache\htdocs"> //网站存放的历史目录跟documentRoot保持一致
Options Indexes FollowSymLinks //设置该虚拟主机下的特性,访问时显示该目录下的全部文件列表
AllowOverride None //容许或者不容许域名重写 None 不容许 on 容许
Order allow,deny //访问 Allow容许一些访问 Deny 禁止访问,Allow先生效,deny后生效
Allow from all 容许来自全部的访问
</Directory>
表单处理
一、掌握表单的写法(form action method )及常见的表单元素(text、password、hidden、radio、checkbox、select File、submit、button、texteara、reset)
表单标签:<form></form>
Action:表明表单的提交地址 问:当点击提交按钮,页面跳转到了哪里? Action指定的文件里
Method:表明表单的提交方式 分为get和post 默认为get
Get与post 的区别:
Get传值为明文传值,受地址栏长度限制,传送数据量较小,相对于不安全,在服务器短用$_GET接收传递过来的值;
Post传值为非明文传输,传送数据量大,相对与安全,在服务器端用$_POST接收传递过来的值
文本框:<input type=”text”>
单选按钮:<input type=”radio”>
如何实现单选按钮?
答:要给这个input的name属性起同样的名字,例如:
<input type=”radio” name=”sex” value=”男”>男
<input type=”radio” name=”sex” value=”女”>女
复选框:<input type=”checkbox”>
如何实现复选框?
答:要么将复选框的name设置成数组格式,例如:<input name=”hobby[]” type=”checkbox”>
要么把每一个复选框的name设置的都不同
密码框:<input type=”password”>
隐藏域:<input type=”hidden”> 隐藏域的值不会被显示在页面上,可是会随着表单提交,值被提交到后台
下拉列表:<select> <option></option> </select>
普通按钮:<input type=”button”>
重置按钮:<input type=”reset”>
提交按钮:<input type=”submit”>
文件上传域:<input type=”file”>
文本域:<textarea cols=””rows=””></textarea>
问题:
1)为何要给表单的每一个元素起name属性?用id或者class代替name能够吗?为何?
答:要想在服务器端接收到前台表单提交过来的值,必需要给表单元素声明name属性,不然表单的值将没法在服务器端获取。不能用其余属性来代替name,服务器只识别name属性
2)当点击提交按钮,页面没有发生任何变化,请你解释是什么缘由。
答:表单的action属性未设置,或者提交按钮的type属性的值非submit
3)点击提交按钮后,页面显示404错误,这是什么缘由形成的。
答:action指定的文件不存在,404是未找到文件的错误状态码
二、掌握服务器端如何经过$_POST和$_GET和$_REQUEST接收客户端提交的数据
答:在服务器端用$_POST或者$_GET来接受与表单提交方式一致的客户端数据,简而言之:若是表单的method属性设置成post,那么在服务器端就必须用$_POST或者$_REQUEST来接收表单提交的值;
若是表单的method属性设置成get,那么在服务器端就必须用$_GET或者$_REQUEST来接收表单提交的值;
$_POST和$_GET和$_REQUEST是php中的全局预约义数组,他们在使用的时候通常运用于表单,既然是数组,就有键和值,键就是前台表单设置的name属性,值就是该name属性所对应的value
三、掌握动态拼接option
答:首先定义一个数组,例如:$arr=array(1,2,3,4,5,6,7);
<select name=”city”>
Foreach($arr as $key=>$val){
Echo “<option value=”$arr[$i]”>”.$arr[$i].”</option>”
}
</select>
文件操做
一、理解(file_exists、copy、unlink、filesize、filemtime)
答:file_exists():判断给定的文件是否存在
Copy():将一个文件拷贝到另外一个文件里
Unlink():删除服务器端的文件
Filesize():获取文件的大小
Filetime():获取文件上次修改的时间
二、理解fopen、fgets、fread、fwrite和fclose系列函数对文件进行操做
答:fopen():打开文件,返回一个已经打开的文件资源
Fgets():获取文件的一行内容,读取文件
Fread():读取文件,根据参数决定读取几行
Fwrite():将一个字符串写入文件中
Fclose():关闭文件,释放fopen后的文件资源流
三、掌握经过file_get_contents读取文件
答:file_get_contents():将一个文件的内容读入到一个字符串中去,或者是获取一个url的内容
四、掌握经过file_put_contents将数据写入文件
答:file_put_contents():将整个字符串写入到文件里
五、掌握相对路径与据对路径
答:相对路径就是相对于上级目录而言,例如:../a.php
绝对路径就是直接写出文件的位置:例如:C:/web/Apche/a/a.php
MySQL简介与安装
一、理解MySQL的历史
二、掌握MySQL的安装步骤
三、掌握navicat工具
四、掌握MySQL常见的数据类型(整型、浮点型、日期类型、字符串类型)
答:int float date text char和varchar decimal
Char与varchar的区别:
MySQL数据的基本操做
一、建立数据库:create database 数据库名
二、查看全部数据库:show databases
三、打开数据库:use 数据库名
四、删除数据库:drop database 数据库名
五、建立表:create table 表名(列名 数据类型 约束,列名 数据类型 约束。。。。。。)
六、查看当前数据库下全部表:show tables
七、查看当前表结构:desc 表名
八、删除表:drop table 表名
九、插入数据:insert into 表名(【自增列的值能够省略不写不插入】列名,列名。。。。。)values(值1,值2【数据类型为char、varchar、text要加上单引号】)
十、查看数据:select * 或者是具体的字段名 from 表名 where 条件 十一、修改数据:update 表名 set 字段名=新值 where 条件 若是不加where条件整张表的数据都将会更新
十二、删除数据:delete from 表名 where 若是不加where条件整张表的数据都将会删除 也就是清空表
MySQL其余查询
一、where子句
Select * from stu where id=1 or id=2 or id=5
Select * from stu where id in (1,2,5)
二、排序order by
order by 排序列 desc(降序)asc(默认的升序)
三、limit限制记录条数
limit 限制结果集 (若是写了一个参数,就是从第几条开始,但不包括那一条,取几条,若是有两个参数,第一个参数仍是从哪条开始不包括那条,第二个参数就是取几条)
四、distinct去掉重复项
Select distinct(列名) from 表名 where 条件
五、列起别名与表起别名
六、内链接 inner join ... On
左外链接left join ... On
右外链接right join ... On
七、模糊查询语法
like 模糊匹配 %表明有任意多个字符 _表明任意一个字符
八、掌握between…and…
between…and…:在。。。。之间
例如:查询出学生年龄在18到25之间的学生信息 年龄大于18 而且 小于25
Select * from stu where age between 18 and 25
MySQL存储引擎和字符集
12.1 存储引擎概述;
12.2 字符串
【考核要求】
1.掌握常见的存储引擎的区别(MyISAM InnoDB MEMORY);
2.了解常见的字符集(GB2312,GBK,UNICODE)
PHP操做MySQL
13.1 PHP链接MySQL;
13.2 经过PHP对MySQL进行增删改查;
【考核要求】
1.掌握在不查阅手册的状况下实现经过mysql_***系列函数对MySQL进行CRUD操做(mysql_connect、mysql_select_db、mysql_query、mysql_fetch_array、mysql_fetch_assoc、mysql_fetch_row、mysql_insert_id)
问: 使用mysql系列函数用不用php开启mysql扩展?
必须用 不然出现 :undefined 。。。警告
问:mysql_connect()能不能链接远程数据库 ?
能 函数强大 必须能 只要第一个参数写对了,密码和用户名匹配对了,就能链接
mysql_connect():打开一个数据库链接,三个参数,第一个参数是数据库的地址,第二个参数是管理员名,第三个参数是密码 返回一个数据库链接标识
mysql_select_db():选择数据库,有两个参数 第一个参数是数据库名称,第二个参数,mysql_connect返回的数据库标识
mysql_query():执行sql语句 对select返回的是资源 对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。
mysql_fetch_array():从结果集中取得一行做为关联数组,或数字数组,或两者兼有
例如:mysql_fetch_array($res,MYSQL_NUM) 这将是索引数组
mysql_fetch_array($res,MYSQL_ASSOC) 这将是关联数组
mysql_fetch_assoc:从结果集中取得一行做为关联数组
mysql_fetch_row:从结果集中取得一行做为索引数组
mysql_insert_id:取得刚刚插入自动增加的id 不须要写任何参数
CMS项目开发与总结
1、管理员登陆功能的开发思路及伪代码:
① 先创建一个登陆表单,内容包括用户名、密码和登陆按钮
② 将action地址设置为将要进行服务器端验证的文件,method属性为post
③ 在这个服务器端验证的文件进行链接数据库的等操做
④ 书写规范的sql查询语句:select *from 表名 where name=$_POST[‘name’]
⑤ 若是词条语句执行成功那么说明用户名存在,紧接着进行判断密码,若是失败说明用户不存在,提示跳转进入到注册页面
⑥ 由于我是select * 是将全部的字段都查询出来,那么只须要将提交过来的密码与查询出来的密码进行匹配,匹配成功则登陆成功,不然登陆失败,失败缘由是密码错误,提示跳转到登录页面,从新输入密码!
2、搭建后台主框架并添加功能菜单(frameset):
答:<frameset rows="80,*">
<frame name="top" src="top.php">
<frameset cols="150,*">
<frame name="lower_left" src="left.php">
<frame name="lower_right" src="right.php">
</frameset>
</frameset>
3、新闻添加的思路:
① 组建新闻添加的表单页面,有新闻标题、内容、所属分类、添加人员
② 分类不能是静态的,应该是从数据库里面读出来的拼接成的下拉列表
③ 须要将表单的提交按钮属性设置成为submit,method设置成为post,action为进行插入的服务器端的文件名
④ 页面跳转到实现添加功能的文件里,进行一系列验证,验证完成后链接数据库,组合sql语句:insert into 表名(列名)values(post提交过来的值),完成插入操做,插入成功跳转到列表页面
⑤ 列表页面的显示信息须要进行两表联合查询:select * from 新闻表 inner join 分类表 on新闻表.分类id=分类表.id,一张是新闻表一张是分类表
四、删除新闻的思路:
① 该操做是在新闻列表里面进行的操做
② 首先要保证有一个a标签来让管理员进行点击,还要注意,要删除那条新闻要将新闻id传递给服务器端,那就须要进行get传值:<a href=’del.php?Id=刚才列表所查询出来的新闻id’>
③ 服务器端用$_GET[‘id’]来获取刚才的传递过来的id值
④ 进行链接数据库等操做,组合sql语句:delete from 新闻表 where id=$_GET[‘id’]
⑤ 执行sql语句,执行成功跳转到列表页面,失败给出提示
五、修改新闻的思路:
① 该操做是在新闻列表里面进行的操做,可是须要有一个表单页面,相似于添加页面,与添加页面不一样的是,文本框里面会有值
② 首先要保证有一个a标签来让管理员进行点击,还要注意,要修改那条新闻要将新闻id传递给服务器端,那就须要进行get传值:<a href=’update_news.php?Id=刚才列表所查询出来的新闻id’>
③ 服务器端用$_GET[‘id’]来获取刚才的传递过来的id值先进行的操做查询,将这条记录的信息查询出来输出到页面的表单里面,还要注意一会修改的时候须要id,就将id 放到表单里面的一个隐藏域里面
④ 用户点击保存,服务器端获得新的数据,验证非空,链接数据库等操做
⑤ 组合sql语句,进行update操做:update 表名 set 字段名=新值($_POST新提交过来的),字段名=新值($_POST新提交过来的),。。。。。。修改完成跳转到列表页面
六、搜索新闻的思路
七、
① 在新闻列表页面写一个搜索框,和一个分类的下拉菜单(动态读取的),搜索按钮
② 点击搜索按钮,仍提交到显示列表的php文件里
判断提交过来的文本框里的值,若是有,将这些信息组装成以一个where条件
④ 执行sql语句:
select news.id,title,content,fenlei.name,user_name,add_time,click from news inner join fenlei on news.fenlei_id=fenlei.id order by news.id where (title like “%提交过来的文本框里面的值%”or content like “%提交过来的文本框里面的值%”) and news.fenlei_id=提交过来的下拉框里面的值
⑤ 执行完成,从新输出表单
7、首页导航功能开发(导航即展现新闻分类)
答:① 创建一个前台主页,要有一个导航栏
② 由于导航是从数据库里面动态读出来的,因此要用php操做mysql读取分类表中的数据
拼写sql语句:select * from 分类表 而后执行sql语句
④ 读出数据后,将数据循环到ul的列表中去
8、首页最新新闻功能开发
① 在前台页面上创建一个最新新闻的模块,也就是一个ul列表
② 最新新闻是从数据库里面读出来的,因此要用php操做mysql读取新闻表中的数据
③ 由于是最新新闻,确定是添加时间最新的,因此查询的条件就应该是根据添加时间降序排列
④ 拼写sql语句:select title,add_time from news order by add_time desc limit 3
⑤ 读出数据后,将数据循环到ul的列表中去
9、首页最热新闻功能的开发
① 在前台页面上创建一个最热新闻的模块,也就是一个ul列表
② 最热新闻是从数据库里面读出来的,因此要用php操做mysql读取新闻表中的数据
由于是最新新闻,确定是点击量时最多的,因此查询的条件就应该是根据点击量降序排列
④ 拼写sql语句:select id,title,add_time,click from news order by click desc limit 3⑤ 读出数据后,将数据循环到ul的列表中去