(1)关于纯table排版
(2)当鼠标停留在图片上时,显示文字用title=""
(3)关于css图片滤镜.hover
(4)php传递url参数 地址后+ ?id='';
(5)
$total_sql = "SELECT COUNT(*) FROM meeting_record";
$total_result = mysql_query($total_sql);
list($cnt)=mysql_fetch_row($total_result);
echo $cnt;
(6)通过url传值
http://localhost/text.php?p=1&id=2
两个以上的参数用 &
(5)抛出异常 throw newException
后必须捕获(try{}catch(Exception $e){})
否则会出错
(6)捕获异常后,可以进行处理或继续抛出。继续抛出的话就由php去处理,或者是自己写一个顶级处理器
function my_exception($e){
echo"".$e->getMessage();
}
set_exception_handler("my_exception")
(7) php代码里有java/html/css
只有php代码在服务器端执行
其余都在IE浏览器本地(客户端)执行
(8)header("location:a.php");
直接进行跳转
跳转是从服务器回到浏览器,浏览器再发请求
(9)演示如何通过Http响应,控制浏览器间隔一定时间去跳转.
<?php
//header(“Refresh: 3 ;url=http://www.sohu.com”);
header(“Refresh: 3 ;url=http://localhost/http/d.php”);
?>
(10)<?php
//通过header来禁用缓存(ajax )
header("Expires:-1");
header("Cache-Control: no_cache");
header("Pragma:no-cache");
echo"hello!cache";
?> 在回车栏刷新直接就是最新数据,不会取缓存
(11)$fp=fopen("a.txt","r+");
$fp相当于是一个指针
(12)drop table user1;在数据库控制台删除表的结构和数据
delete table user1;删除表的数据
(13)在控制台的sql语句最后要加;
(14)在控制台创建表时,中文不可用,是因为编码问题,在控制台中要用gbk编码
set character_set_client=gbk;
set character_set_results=gbk;
(15)
$res = Mysql_query(‘select * from user1 ’);
$res是资源句柄,$res 指向结果集的前一行
mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE。
$row = mysql_fetch_row($res);中 $row 就是一个数组
(16)释放资源,关闭连接
Mysql_free_result($res); //资源
Mysql_close($conn);//连接
(17)mysql_close()使用后还可以使用结果集,结果集是取数据到内存,即使关闭连接还可以用!!关闭资源就不行了
(18)删除等操作用
If(mysql_affected_rows($conn)>0){
Echo “成功!”;
}else{}
当删除的id不存在时会成功,影响行数为0
(在控制台操作)
(19)die(“操作失败”.mysql_error());
(20)$sql = “dropdatabase hsp”;
$sql = “create database hsp”
删除数据库
(21)字符要用单引号括起来,在” ‘ ”.$sql.” ’ ”
(22)mysqli是MySQL扩展库的改进版
面向对象方式编写,mysqli
<?php
header("Content-type: text/html;charset=utf-8");
//mysql操作mysql数据库(面向对象风格)
//1.创建Mysqli 对象
$mysqli = newMySQLi("localhost","root","12345678","myapp");
//验证是否OK
if($mysqli->connect_error){
die("连接失败!".$mysqli->connect_error);
}
//2.操作数据库(发送sql)
$sql = "select * fromuser1";
//$res 是结果集 mysqli result
$res =$mysqli->query($sql);
//3.处理结果mysql_fetch_row();
while($row=$res->fetch_row()){
foreach($row as$key=>$val){
echo"--$val";
}
echo"<br/>";
}
//4.关闭资源
//释放内存
$res->free();
//关闭连接
$mysqli->close();
?>
(23)mysqli有两种风格,面向对象和面向过程
(24)字符串必须用单引号括起来
(25)$sqls=”insert into …;”;
$sql.=”insert into …;”;
$sql.=”insert into…;”;
批量操作
$b = $mysqli->multi_query($sqls);
●批量查询
$sqls=”select * from …”;
$sql.=” select * from …”;
$res = $mysqli->multi_query($sqls); //返回的只是个布尔值If($mysqli->multi_query($sqls)){
Do{
$result =$mysqli->store_result();//取出第一个结果集,资源
While($row =$result->fetch_row()){
Foreach(){}
}
//用完当前资源及时释放
$result->free();
If(!$mysqli->more_result())
break;
}while($mysqli->next_result());
}
(26)事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。
(PHP核心课程进阶12)
一般执行语句都是自动提交的
$mysqli->autocommit(false);
(27)’aa’ or 1=’1’;
(28)<input type=”checkbox”name=”hobby[] value=”” ”>xx
<input type=”checkbox”name=”hobby[] value=”” ”>xx
<input type=”checkbox”name=”hobby[] value=”” ”>xx
复选框传递数据,要用这种方式才能取得到值
(29)empty 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE
,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
(30)isset 检测变量是否设置,并且不是 NULL
。
如果已经使用unset()释放了一个变量之后,它将不再是isset()。若使用 isset() 测试一个被设置成 NULL
的变量,将返回 FALSE
。同时要注意的是一个 NULL
字节("\0")并不等同于 PHP 的 NULL
常数。
(31)post和get 数据传输大小http协议没有限制
限制的是浏览器,不同浏览器有不同的标准
(32)超链接默认是get ,
header(“Location: ok.php?aaa=xiaoming”);
先从服务器回来浏览器再重新发请求,是get
(33)用分层模式设计
工具类(连接在其中),方法类,在方法类中实例化工具类
获取结果集有两种处理方式
1. 返回工具类返回结果集而不关闭连接
2. 返回数组,在工具类中取数据后关闭资源,返回数组
Public functionexecute_dql2($sql){
$arr=array();
$res=mysql_query($sql,$this->conn)or die(mysql_error);
$i=0;
While($row=mysql_fetch_assoc($res)){
$arr[$i++]=$row; //或者是$arr[]=$row;
}
Mysql_free_result($res);
Return $arr;
}
(34)分页属于页面通用的,应当把其方法封装到SQL.class.php
$fenye为一个对象
Class FenyePage{
Public $pageSize=6;
Public $res_array; //这是显示数据
Public $rowCount; //这是从数据库中获取
Public $pageNow //用户传递
Public $pageCount //计算得到的
Public $navigate //分页导航
}
($sql1 为查询6条数据,$sql2 为查询总数)
Public functionexecute_dql_fenye($sql1,$sql2,&$fenye){
$res=mysql_query($sql1,$this->conn)or die (mysql_error());
$arr=array();
While($row=mysql_fetch_assoc($res)){
$arr[]=$row;
}
Mysql_free_result($res);
$res2=mysql_query($sql2,$this->conn);
If($row=mysql_fetch_row($res2)){
$fenyePage->$pageCount=ceil($row[0]/$fenyePage->Size); $fenyePage->$rowCount=row[0];
}
$fentePage->$res_array=$arr;
}
在service 中
Function getFenyePage($fenyePage){
$sqlHelper=new SqlHelper();
$sql1=”select * from emp where limit ”.($fenyePage->pageNow-1)*$fenyePage->pageSize.”,”.$fenyePage->pageSize;
$sql2=”select count(id) from emp”;
$sqlHelper->execute~~
}
(35)<a οnclick=’confirmDele({$row[‘id’]})’href=’###’>xxx</a>
<script type=”text/javascropt”>
FunctionconfirmDele(val){
Return window.confirm(“是否要删除id=”+val+”的用户”);
}
</script>
(36)控制器属于web层
控制器文件的主要用处是接收请求,并调用某个Service类来完成任务,再决定跳转到哪个页面
(37)
M 主要由 类 来做,用于处理具体的业务逻辑.
V 由php来做,主要用于做界面(即显示数据)
C 有php来做,用于去响应用户的各种请求(比如增,删,改.)
(38)只读
<input Readonly=”readonly” type=”” value=””>
(39)session 是服务器端技术,一个会话对应一个session 文件
Session_start();
如果我们要取出对象,则需要实现申明一下类的定义信息
(在输出页面声明)类的定义重新引入到文件,我们必须 把它放在session_start()前
Cookie 是客户端技术
(40)session 技术 在浏览器发请求给服务器时会用cookie把session 的(文件名)带过去,让一个浏览器(多个php页面)对应一个session 文件
(41)禁用cookie 之后怎么实现多个php页面共享一个session?(1)在每个超链接上添加一个PHPSESSID=sesssionId;
同时在每个页面加入:
if(isset($_GET[‘PHPSESSID’]){
//设置sesssion_id
session_id($_GET[‘PHPSESSID’]);
}
session_start();...
(2) 使用常量SID
使用方法如下:
在超链接 action header(“Location: xx”) 可以直接拼接 SID常量即可
echo "<a href='ShopProcess.php?bookid=sn003&bookname=西游记&".SID."'>西游记</a><br/>";
(3) 可以启用session.use_trans_sid 指定是否启用透明 SID 支持 即可以这样设置
ssssion. use_trans_sid= 1 ,这样重启apache即可生效.
(42)session_start— 启动新会话或者重用现有会话
使用session 时要先启用
(43)禁用cookie时在浏览器设置,某些用户会禁用cookie
(44)$fp=fopen(“文件名”,”r”); //需要判断
//该函数返回一个指向文件的是这个
$file_info=fstat($fp);
Echo “<pre>”;
Print_r($file_info);
Echo “</pre>”;
echo"<br/>文件访问时间".date("Y-m-dH:i:s",$file_info['atime']);
echo "<br/>文件修改时间".date("Y-m-dH:i:s",$file_info['mtime']);
echo "<br/>文件改变时间".date("Y-m-dH:i:s",$file_info['ctime']);
(45)order byvoteMonth
(46)数据库也是一种文件,可以把数据作为小型数据库
如果我们有这样的需求,有些数据,放在数据库代价高,这样可以考虑直接放入文件.
(47)XML声明放在XML文档的第一行
XML声明由以下几个部分组成:
version - -文档符合XML1.0规范,我们学习1.0
encoding - -文档字符编码,比如”gb2312”
standalone - -文档定义是否独立使用
standalone="yes“
standalone=“no” 默认
(48)<![CDATA[~~~~]]> 用于显示特殊字符
图片等!
有些内容可能不想让解析引擎解析执行,而是当作原始内容处理,用于把整段文本解释为纯字符数据而不是标记的情况。包含大量<、>、&或者"字符。CDATA节中的所有字符都会被当作元素字符数据的常量部分,而不是XML标记。
比如:
<介绍><![CDATA[$^&()><LKL:>Kjlk><]]></介绍>
<头像><![CDATA[$%()^&#@@]]></头像>
CDATA的基本语法
<![CDATA[
内容...
]]>
面试题: 请问如何使用xml文件来传递、保存一个图片.
答: 使用程序先读入到内存,然后保存到 xml 文件的<![CDATA[ 文件内容]]>
l<?xml-stylesheettype="text/css" href=“my.css"?>
(49)dtd的主要用处是约束xml文件,也可去约束html xhtml
DTD(DocumentType Definition),全称为文档类型定义。
在默认情况下,浏览器不去检测.
(50)
<meta http-equiv="content-type"content="text/html;charset=utf-8"/>
(51)explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。
(52)关于图片上传
$_FILES
array(1) {
[
"image"]=>array(5)
{
["name"]=>string(36) "57a1265566a7120c5b513eb4cc18f6d1.jpg"
["type"]=>string(10) "image/jpeg"
["tmp_name"]=>string(27) "C:\Windows\Temp\php8BDE.tmp" ["error"]=>int(0)
["size"]=>int(174112)
}
}
(53)
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
(54)mysql_num_rows
取得结果集中行的数目
(55)
mysql_result(data,row,field)
data | 必需。规定要使用的结果标识符。该标识符是 mysql_query() 函数返回的。 |
row | 必需。规定行号。行号从 0 开始。 |
field | 可选。规定获取哪个字段。可以是字段偏移值,字段名或 table.fieldname。 如果该参数未规定,则该函数从指定的行获取第一个字段。 |
(56)trim — 去除字符串首尾处的空白字符
(57)mysqli_real_escape_string(connection,escapestring);
对字符串转义,
mysqli_escape_string(connection,escapestring);
$connection为数据库连接,escapestring为待转义的字符
(58)strtolower — 将字符串转化为小写
(59)elseif 和 else if 的区别
Elseif == else{ if() }
Elseif为嵌套语句、、、、、elseif 为多条件判断
(60)
Var_dump($upload->getUploadFileInfo());
上传成功后返回的信息
array(1) {
[0]=>
array(8) {
["name"]=>
string(36) "20160515094800_ymAsJ.thumb.700_0.png"
["type"]=>
string(9) "image/png"
["size"]=>
int(36002)
["key"]=>
string(5)"image"
["extension"]=>
string(3) "png"
["savepath"]=>
string(17) "./Public/Uploads/"
["savename"]=>
string(17) "59fe7fdec7b66.png"
["hash"]=>
string(32) "ec94199cd96829258ea8b5cb7217d4dd"
}
}
(61)
php中的索引数组是指以数字为键的数组。并且这个键值是自增的
关联数组指的是一个键值对应一个值,并且这个键值是不规律的,通常都是我们自己指定的。