pdo用法学习笔记

 更新时间:2016年11月25日 17:31  点击:1721

一、             基本概念

1、  PDO:PHP Data Object的缩写。PDO扩展类库为PHP定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。

PDO就是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口。

2、  对任何数据库的操作,并不是使用PDO扩展本身执行的,必须针对不同的数据库服务器使用特定的PDO驱动程序访问。如:MYSQL(PDO_MYSQL)。可以在phpinfo()函数中查看PDO部分的列表。

二、PDO的安装

1、Linux:安装PHP时,向configure命令中添加如下标志:

–with-pdo-mysql=/usr/local/mysql              //其中/usr/local/mysql为mysql安装目录

2、Windows:

在C:windows下找到php.ini文件

(1)打开:extension=php_pdo.dll

(2)打开:extension=php_pdo_mysql.dll

三、使用PDO过程

1、连接数据库

(1)创建PDO对象

(2)设置PDO行为属性(setattribute())

(3)设置字符集($link->query(‘set names UTF8’))

2、发送SQL语句

(1)准备SQL语句

(2)执行发送

3、查看结果

四、连接数据库

1、创建PDO对象:

(1)$link = new PDO(DSN, 用户名, 密码, 驱动属性);

1)DSN:数据源名,用来定义一个必须用到的驱动程序和要使用的数据库。mysql的DSN格式:’mysql:host=localhost;dbname=lamp30’

2)可以将DSN放到文件里,如:’uri:file:///usr/local/dsn.txt’

3)创建对象时要使用try…catch语句,因为在声明PDO实例发生错误时,会自动抛出一个异常。如:

 代码如下 复制代码

try{

$link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’);

}catch(PDOException $e){

echo $e->getMessage();

exit(‘连接数据库错误.’);

}

2、驱动属性

(1)可以将必要的几个选项组成数组(属性名作为元素键,属性值作为元素值)传递给构造方法的第四个参数。如果没有在构造方法中定义驱动属性,可以在之后使用PDO类的setattribute()函数定义各个属性。

(2)书P501页有这些属性中文释义。

3、设置字符集:$link->query(‘set names UTF8’)

五、发送SQL语句

(1)$link->exec():执行增删改,返回受影响行数,执行失败返回false或0。

(2)$link->query():执行查询,返回PDOStatement结果集对象。

六、查询结果

1、非查询:

(1)直接用$link->exec()的返回影响行数

(2)$link->lastInsertId()返回最后一条INSERT命令生成的AUTO_INCREMENT编号值

2、见预处理

七、预处理

1、第二步:发送SQL语句

 代码如下 复制代码

$stmt = $link->prepare(‘select * from user where id=:id’);

$stmt->bindparam(‘:id’, $id, PDO::PARAM_INT);

$id = 2;

$stmt->execute();

bindParam()参数有以下7种:可以不用写

PDO::PARAM_INT

PDO::PARAM_STR

PDO::PARAM_BOOL

PDO::PARAM_NULL

PDO::PARAM_LOB:大对象数据类型

PDO::PARAM_STMT:PDOstatement类型

PDO::PARAM_INPUT_OUTPUT:存储过程使用的数据类型

2、第三步:

如:

 代码如下 复制代码

$stmt = $link->query(‘select * from user’);

(1)fetch()方法

$pdoStat ->bindColumn(1, $id);                 //第一个参数可以是从1开始的索引值

$pdoStat ->bindColumn(‘name’, $name);    //也可以是列名

$pdoStat ->bindColumn(‘pass’, $pass);

while($row = $stmt ->fetch(PDO::FETCH_BOUND)){

echo $id.’ ’;

echo $name.’ ’;

echo $pass.’<br>’;

}

fetch()参数有六种:见手册。

可以用setFetchMode()方法设置默认模式。

(2)fetchall()方法

 代码如下 复制代码

$result = $stmt ->fetchall();

foreach($result as $row){

echo $row[‘id’].’ ’;

echo $row[‘name’].’ ’;

echo $row[‘pass’].’<br>’;

}

Fetchall()参数与fetch()相同。

八、事务处理

1、关闭自动提交(在驱动属性中修改)

2、打开事务

3、提交事务/回滚

4、打开自动提交

如:

 代码如下 复制代码

$link = new PDO(‘mysql:host=localhost;dbname=lamp30’);

//1

$link->setattribute(PDO::ATTR_AUTOCOMMIT, false);

//2

$link->begintransaction();

$result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’);

//3

if($result){

$link->commit();

}else{

$link->rollback();

}

//4

$link->setattribute(PDO::ATTR_AUTOCOMMIT, true);

九、PDO对象中的成员方法

1、$link->getattribute(属性名):获取一个驱动属性。

2、$link->setattribute(属性名,属性值):设置一个驱动属性。

1)因oracle把空字符串返回为NULL值,而其它数据库无此特性,为了有更好的兼容性$link->setattribute(PDO::ATTR_ORACLE_NULLS ,PDO::NULL_EMPTY_STRING,);

2)有三种显示错误的方式:静态、WARNING消息、异常

3、$link->errorcode():获取错误码。

1)如setattribute函数设置显示错误方式为静态,则出现错误时什么都不显示,必须调用此函数,才能查看错误号。

4、$link->errorinfo():获取错误信息(数组)。

1)如setattribute函数设置显示错误方式为静态,则出现错误时什么都不显示,必须调用此函数,才能查看错信息。

5、$link->lastinsertid():获取插入到表中的最后一条数据主键值(如有多条数据同时插入,返回第一个插入行的ID)。

6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。

7、$link->begintransaction():打开事务。

8、$link->commit():提交一个事务,执行一个SQL。

9、$link->rollback():回滚一个事务。

十、错误模式

1、静态模式:

 代码如下 复制代码

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)

(1)       默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。

(2)       查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。

2、警告模式:

 代码如下 复制代码

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)

(1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。

(2)这是mysql和mysqli显示错的方式。

3、异常模式:

 代码如下 复制代码

$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

(1)       此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。

(2)       如果异常导致脚本终止,则事务将自动回滚。

(3)       PDO推荐使用此模式。

十一、持久连接

 代码如下 复制代码

$link->setAttribute(PDO::ATTR_PERSISTENT, true);

持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。

文章介绍了关于如何利用遍历的方式来实现字符串编码的相互转换,有需要了解的字符串,对象,或者数组转的可以看一下。
 代码如下 复制代码

/**
 * 循环实现编码互转
 *
 * @param string $param(字符串,对象,或者数组),$currCharset当前编码,$toCharset期望编码
 * @return 参数类型
 */
function zhandi_iconv($param,$currCharset,$toCharset){
 if ($currCharset != $toCharset){
  if (is_string($param)){
   return iconv($currCharset, $toCharset, $param);
  }
  elseif (is_array($param)){
   foreach ($param as $key => $value){
    $param[$key] = zhandi_iconv($value);
   }
   return $param;
  }
  elseif (is_object($param)){
   foreach ($param as $key => $value){
    $param->$key = zhandi_iconv($value);
   }
   return $param;
  }
  else{
   return $param;
  }
 }
 return $param;
}

本文章介绍这个php分页类支持下一页,下页,首页等所有分页要有的尽有哦,有需要的同学可以参考一下下哈。
 代码如下 复制代码

<?php
/************************************************************************************
* 完美分页类,可以自定义分页(比高胖老师的完美哈,O(∩_∩)O哈哈~)                               *
************************************************************************************
* 版权所有 (C) 2011-2012 北海情书-一个程序员博客,并保留所有权利。                 *
                                 *
* **********************************************************************************
* $Author: 北海情书 (hackmyth@163.com) $                                           *
* $Date: 2011-07-18 10:00:00 $                                                     *
* **********************************************************************************/

    class Page{
   
        private $total;         //数据总条数
        private $listRows;      //每页显示条数
        private $limit;         //限制条数
        private $pageNum;       //总页数
        private $page;          //当前页
        private $config=array('head'=>"条记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首页", "last"=>"末页");
     
        /**
         * 构造方法,可以设置分页类的属性
         * @param        int        $total                计算分页的总记录数
         * @param        int        $listRows        可选的,默认每页需要显示的记录数
         *
         */
        public function __construct($total,$listRows=10){
        
                $this->total=$total;
                $this->listRows=$listRows;
                $this->pageNum=ceil($this->total/$this->listRows);   //获取总页数
                if($_GET['page']>$this->pageNum){      //防止过界      
                       $_GET['page']=$this->pageNum;
                }
                $this->page=!empty($_GET['page'])?$_GET['page']:"1"; //当前页
                $this->limit=$this->setPage();         //分页公式
        }

        public function __get($args){
              
                if($args=='limit'){            //过滤非法请求
                        return $this->limit;
                }
                return null;
        }

        //计算分页公式
        private function setPage(){

           return "limit ".($this->page-1)*$this->listRows.",".$this->listRows;
       
        }

        //上一页
        private function prev(){
                return "<a href='?page=".($this->page-1)."'>".$this->config['prev']."</a>";
        }
      
        //下一页
        private function next(){
                return "<a href='?page=".($this->page+1)."'>".$this->config['next']."</a>";
        }

        //首页
        private function first(){
                return "<a href='?page=1'>".$this->config['first']."</a>";
        }

        //尾页
        private function last(){
                return "<a href='?page=".($this->pageNum)."'>".$this->config['last']."</a>";
        }

    

        //分页列表
       
        private function pagelist(){

                $lists.='';
                for($i=1;$i<$this->pageNum;$i++){

                    $lists.="<a href='?page=".$i."'>$i</a>&nbsp;&nbsp;";
                }
                return $lists;
        }


        public function fpage($display=array(1,2,3,4,5)){
       
             $html[1]= "共有".$this->total.$this->config['head'];       
             $html[2]= $this->prev();  //上一页
             $html[3]= $this->next();  //下一页
             $html[4]= $this->first(); //首页
             $html[5]= $this->last();  //尾页
             $html[6]= $this->pagelist();  //列表
             $fpage='';
             foreach($display as $index){
                       
                  $fpage.=$html[$index];
             }
             return $fpage;
        }
   
   
    }

本文章分享一篇关于php汉字转换拼音实现程序,有需要的同学可以参考一下下哈。

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<?php

 代码如下 复制代码
function Pinyin($_String, $_Code='UTF8'){ //GBK页面可改为gb2312,其他随意填写为UTF8
        $_DataKey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha".
                        "|chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu|".
                        "cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er".
                        "|fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui".
                        "|gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang".
                        "|jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang".
                        "|kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue".
                        "|lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne".
                        "|nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen".
                        "|peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang".
                        "|rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao|".
                        "she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai|".
                        "tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu".
                        "|xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you".
                        "|yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong|".
                        "zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo";
        $_DataValue = "-20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990".
                        "|-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725".
                        "|-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263".
                        "|-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003".
                        "|-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697".
                        "|-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211".
                        "|-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922".
                        "|-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468".
                        "|-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664".
                        "|-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407".
                        "|-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959".
                        "|-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652".
                        "|-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369".
                        "|-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128".
                        "|-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914".
                        "|-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645".
                        "|-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149".
                        "|-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087".
                        "|-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658".
                        "|-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340".
                        "|-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888".
                        "|-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585".
                        "|-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847".
                        "|-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055".
                        "|-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780".
                        "|-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274".
                        "|-10270|-10262|-10260|-10256|-10254";
        $_TDataKey   = explode('|', $_DataKey);
        $_TDataValue = explode('|', $_DataValue);
        $_Data = array_combine($_TDataKey, $_TDataValue);
        arsort($_Data);
        reset($_Data);
        if($_Code!= 'gb2312') $_String = _U2_Utf8_Gb($_String);
        $_Res = '';
        for($i=0; $i<strlen($_String); $i++) {
                $_P = ord(substr($_String, $i, 1));
                if($_P>160) {
                        $_Q = ord(substr($_String, ++$i, 1)); $_P = $_P*256 + $_Q - 65536;
                }
                $_Res .= _Pinyin($_P, $_Data);
        }
        return preg_replace("/[^a-z0-9]*/", '', $_Res);
}
function _Pinyin($_Num, $_Data){
        if($_Num>0 && $_Num<160 ){
                return chr($_Num);
        }elseif($_Num<-20319 || $_Num>-10247){
                return '';
        }else{
                foreach($_Data as $k=>$v){ if($v<=$_Num) break; }
                return $k;
        }
}
function _U2_Utf8_Gb($_C){
        $_String = '';
        if($_C < 0x80){
                $_String .= $_C;
        }elseif($_C < 0x800) {
                $_String .= chr(0xC0 | $_C>>6);
                $_String .= chr(0x80 | $_C & 0x3F);
        }elseif($_C < 0x10000){
                $_String .= chr(0xE0 | $_C>>12);
                $_String .= chr(0x80 | $_C>>6 & 0x3F);
                $_String .= chr(0x80 | $_C & 0x3F);
        }elseif($_C < 0x200000) {
                $_String .= chr(0xF0 | $_C>>18);
                $_String .= chr(0x80 | $_C>>12 & 0x3F);
                $_String .= chr(0x80 | $_C>>6 & 0x3F);
                $_String .= chr(0x80 | $_C & 0x3F);
        }
        return iconv('UTF-8', 'GB2312', $_String);
}

//测试

 代码如下 复制代码
include("inc/db/database.php");
$db = new db();
 //第二个参数"1"可随意设置即为utf8编码
$query =$db->query("select * from o_art_type ");
$fetch = $db->fetch($query,0);
//print_r($fetch);
foreach( $fetch as $v=> $vv )
{
 //print_r( $vv['id'] );
 //echo $vv['typename'];
 $s = Pinyin($vv['typename'],'gb2312');
 $db->query("update o_art_type set urlname='$s' where id=".$vv['id']);
}

?>

先检查此目录下是否有文件,如果有,是文件夹的话就再调用此函数删除,如果是文件就直接调用 unlink 删除,最后删除此目录。

 

 代码如下 复制代码

<?php
function removeDir($dirName)
{
    if(! is_dir($dirName))
    {
        return false;
    }
    $handle = @opendir($dirName);
    while(($file = @readdir($handle)) !== false)
    {
        if($file != '.' && $file != '..')
        {
            $dir = $dirName . '/' . $file;
            is_dir($dir) ? removeDir($dir) : @unlink($dir);
        }
    }
    closedir($handle);
 
    return rmdir($dirName) ;
}
?>

[!--infotagslink--]

相关文章

  • PyTorch一小时掌握之迁移学习篇

    这篇文章主要介绍了PyTorch一小时掌握之迁移学习篇,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-08
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • Smarty模板学习笔记之Smarty简介

    1、简介Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目...2014-05-31
  • php Observer观察者模式之学习笔记

    当我们在星际中开地图和几家电脑作战的时候,电脑的几个玩家相当于结盟,一旦我们出兵进攻某一家电脑,其余的电脑会出兵救援。 那么如何让各家电脑知道自己的盟友被攻击了...2016-11-25
  • 开启BootStrap学习之旅

    当下最流行的前端开发框架Bootstrap,可大大简化网站开发过程,从而深受广大开发者的喜欢,你如果也喜欢Bootstrap前端开发框架,不要错过这次旅行...2016-05-05
  • 值得分享和收藏的Bootstrap学习教程

    这绝对是一套值得分享和大家收藏的Bootstrap学习教程,完整的知识体系,系统的学习资料,帮助大家开启Bootstrap学习之旅,享受Bootstrap带给大家的奇妙乐趣...2016-05-14
  • PHP 日期函数 学习笔记介绍

    举一个简单的date例子 我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。 代码如下 复制代码 <!DOCTY...2016-11-25
  • 学习 Vue.js 遇到的那些坑

    这篇文章主要介绍了学习 Vue.js 遇到的那些坑,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下...2021-02-04
  • AI:如何训练机器学习的模型

    这篇文章主要介绍了是如何进行机器学习的模型的训练,全文逻辑清晰,简单易懂,如果您正在学习机器学习那么可以参考下,说不定会有不一样的收货...2021-04-16
  • Android学习笔记之多界面切换实例

    一篇Android学习笔记之多界面切换实例,希望对各位朋友有所帮助。 用过VB 、 VC#的朋友都知道,在VB或VC#里要进行窗口(界面)切换很容易 例如在VB、C#里: 有 Fom1、...2016-09-20
  • php中的变量引用传值学习笔记

    引用:意思是将原始对象在内存中的地址传递给目标对象,就相当于原始对象和目标对象指向的是同一个内存地址。此时,如果对目标对象或者原始对象进行修改,内存中的数据也会改...2016-11-25
  • PHP中的cURL请求及示例学习笔记

    cURL是php中一个很强大的功能,可以模仿各种用户请求,如模仿用户登录,发送php cookie等等操作,下面我来整理一些相关的方法与各位同学看看 备注:使用curl_init函数,必须...2016-11-25
  • 那些年,我还在学习C# 学习笔记

    那些年学了ASP.NET后,才开始学习C#,说来也怪,怎么学了ASP.NET才来学习C#,其实没有什么的...2020-06-25
  • YII2 WIDGET的学习笔记

    CWidget是所有Widget的基类。CWidget是自包含组件,可以看出是MVC的简略版,CWidget相比Controller,既没有actions,也没有filters widget,英文意思为小工具,小挂件,在程序...2016-11-25
  • metasploit调用nexpose扫描学习笔记

    Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具 nexpose安...2016-11-25
  • php学习笔记之PHP扩展开发教程

    PHP扩展开发不是所有开发者都会操作的一个东西,下面我来演示一个关于PHP扩展开发实现过程,各位同学有需要可进入参考。 我们先假设需要这样一个扩展,提供一个叫tao_s...2016-11-25
  • Yii2学习笔记之汉化yii设置表单的描述

    小编推荐的这篇文章介绍了Yii2学习笔记之汉化yii设置表单的描述,非常实用,有兴趣的同学快来看看吧。 一:汉化框架&#8195;&#8195;框架汉化在这里设置,如果不生效,前台后...2017-07-06
  • php Builder建造器模式学习笔记

    星际里面有不少的任务关,也可以自己编辑地图,画面上有各种地形,建筑和部队,存在一个问题,初始化画面的流程很乱。待解决的问题:完成初始化画面的工作,同时尽量减少各种绘制...2016-11-25
  • php中session学习笔记

    Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中我们可以看到,Session实际上是一个...2016-11-25
  • 学习使用PHP数组

    PHP4.0中共有超过30个新的数组相关函数。其中很多通用函数答应你检查给定数组中是否存在特定对象、对数组元素计数、增加或删除元素,或对元素排序。 假如你有很大的...2016-11-25