学习PHP时的零散笔记,未整理,不成体系,有兴趣的可以看看

(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 onclick=’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中的索引数组是指以数字为键的数组。并且这个键值是自增的 
关联数组指的是一个键值对应一个值,并且这个键值是不规律的,通常都是我们自己指定的。

猜你喜欢

转载自blog.csdn.net/qq_36289732/article/details/78943625