PHP学习笔记

这篇博客详细介绍了PHP的基础知识,包括变量、字符串操作、数组处理、数据库交互、文件操作、图像处理、Cookie和Session管理、面向对象编程等内容。此外,还涵盖了错误处理、函数使用、魔术方法以及命名空间等高级话题,是PHP初学者全面了解和学习PHP的实用教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础篇

	<?php
    $v1=1;
    $result=isset($v1);//isset()函数判断一个值是否为空
    echo $result;
    echo "<br>";
    var_dump($result);//也是输出可以输出一个变量的完整信息
    $result2=isset($v3);
    echo "<br>v3的结果为:";
    var_dump($result);
    unset($v1);//unset()函数销毁变量
    $result3=isset($v1);
    echo "<br>v1被unset()之后为";
    var_dump($result3);
    echo $v1;
    ?>

结果:

	1<br>bool(true)
    <br>v3的结果为:bool(true)
    <br>v1被unset()之后为bool(false)
    PHP Notice:  Undefined variable: v1 in D:\javascript\p.php on line 15
  • 值传递和引用传递

    1.值传递

    	<?php
        $v1=10;
        $v2=$v1;
        $v1=20;
        echo $v1;
        echo "<br>";
        echo $v2;
        ?>
    

    结果:

    20
    10
    

    2.引用传递 &

    传递的是内存地址,也就是两赋值那个变量也指向了同一个内存

        <?php
        $v1=10;
        $v2=&$v1;
        $v1=20;
        echo $v1;
        echo "<br>";
        echo $v2;
        ?>
    

    结果:

    	20
         20
    
  • $_SERVER变量

    它代表一次请求中,客户端或服务端的一些"基本信息"或系统信息,包括很多

    常用的有

    1.PHP_SELF : 表示当前请求的网页地址(不包含域名部分)

    2.SERVER_NAME : 表示当前请求的服务器名

    3.SERVER_ADDR : 表示当前请求的服务器IP地址

    4.DOCUMENT_ROOT : 表示当前请求的网站物理路劲

    5.REMOTE_ADDR : 表示当前请求的客服端的IP地址

    6.SCRIPT_NAME : 表示当前网页地址

  • 常量

    1.define(‘常量名’,‘常量值’)

    	<?php
        define('P1',3.14);
        echo P1;
        ?>
    

    2.const 常量名=常量值

    	<?php
        const P1=3.14;
        echo P1;//或者constant('P1')
        ?>
    

    3.判断常量是否存在

    	defined("常量名");
    
  • 预定义变量

    预定义变量就是PHP语言内部预先定义好的变量,我们可以直接使用

    PHP_VERSION 表示当前PHP的版本信息

    PHP_OS 表示当前PHP运行所在的系统信息

    PHP_INT_MAX 表示当前版本PHP中的最大的整数值

    M_PI 表示圆周率Π

  • 几个魔术常量

    魔术常量也是常量,只是在形式上为常量,而其值是’‘变化’'的

    _ DIR _ 代表当前PHP网页文件所在的 文件名

    _ FILE _ 代表当前PHP网页本身的路径

    _ LINE _ 代表当前这个常量所在的行号

  • 进制的转换

    1.decbin() 将10进制数转为2进制

    2.decoct() 将10进制数转为8进制

    3.dechex() 将10进制数转为16进制

    或将2,8,16进制转为10进制

    1.bindec() 将2进制数转为10进制

    2.octdec() 将8进制数转为10进制

    3.hexdec() 将16进制数转为10进制

  • 标量类型
    • 布尔类型

      只有两个数值,true,false(不区分大小写)

      在需要当做"布尔值"进行判断或比较的时候,以下数据会被当作布尔值的false

      false,0,0.0,"",'0‘,空数组

    • 数组类型

      数组就是将多个"数据"放在一起,排成一个有序序列,这个序列做为一个整体(里面包括了多个数据),就称为数组

      有下标:

          <?php
          $array=array('zhang' => 123,'wei' => 134);
          echo $array['zhang'];
          echo '<br>';
          echo $array['wei'];
          echo '<br>';
          print_r($array)//输出该数组
          ?>
      

      无下标:

          <?php
          $array=array('zhang','wei');
          echo $array[0];
          echo '<br>';
          echo $array[1];
          ?>
      
    • 字符串

      用单引号或双引号引起来的

      注意:双引号字符串中,如果出现"$"符号,则该符号后的连续字符串(单词)会被识别为一个变量名,如果识别成功(即确实存在该变量),则会将该变量转换为实际内容。如果识别失败(即实际没有该变量),则会报错

          <?php
          $str1=1234343;
          echo "hahah {$str1}1";
          echo "hahha$str11";//报错
          echo "\$str1adfdfa: $str1";
          ?>
      

      单引号:

      只能使用两个转义符 \ \ (代表一个反斜线),\ '(代表一个单引号)

      双引号:

      能使用较为丰富的转义符,包括: \ ,", \n,\r,\t,$等

      heredoc字符串

      形式:$s1=<<<“标识符”

      内容

      标识符;

          <?php
          $str=<<<"a"
          ahafalf安抚杰拉德解放了
          发动发动反击了
          啊打发浪
          echo "<input type="text" ></input>"
          a;
          echo $str;
          ?>
      

    ​ nowdoc字符串

    ​ 形式:$s=<<<‘标识符’

    ​ 内容

    ​ 标识符;

    ​ 字符串长度:

    ​ 1.字符个数

    ​ strlen()

    ​ 2.字节个数

    ​ mb_strlen()

    • 空类型NULL

      只有一个值,null(不区分大小写)

      v1=null;//此时,具有变量v1=null;//此时,具有变量v1=null;//v1,但其中的数据是‘空的‘(没有数据)

      空值变量,isset()判断的结果是false

    • 浮点型
          <?php 
          $x = 10.365;
          var_dump($x);
          echo "<br>"; 
          $x = 2.4e3;//10的3次方
          var_dump($x);
          echo "<br>"; 
          $x = 8E-5;
          var_dump($x);
          ?>
      
  • 类型判断
    • gettype()

      获取一个变量的类型,结果为一个变量类型的名称(字符串)

          <?php 
          $x = 10.365;
          echo gettype($x);
          ?>
      
    • settype()

      设置一个变量的类型

          <?php 
          $x = 10.365;
          echo settype($x,'string');
          echo gettype($x);//string
      
          ?>
      
    • is_int()

      判段是否为整数类型

    • is_float()

      判断是否为浮点类型

    • is_bool()

      判断是否为布尔类型

    • is_string()

      判断是否为字符串

    • is_numeric()

      判断是否为数字类型(含整数,小数以及纯数字字符串)

    • is_object()

      判断变量是否为一个对象

  • 两个特殊判断
    • isset()

      判断一个变量是否存在,或变量中是否有数据,有则返回true,否则返回false,变量中没有数据返回false

    • empty()

      判断是否为’空’,如果确实为‘空’,返回true,否则返回false,如果变量中的数据为空,返回true,否则false

  • 数据类型转换
    • 自动转换
    • 强制转换
          <?php 
          $x =(int) 10.365;
          echo $x;
          echo "<br>";
          $x1=(string)1000;
          echo $x1;
          echo '<br>';
          $x2=(float)10;
          echo $x2;
          ?>
      
  • 运算
    • 算术运算符

      +,-,*,/,%

    • 连接运算符(.)
    • 自操作

      –,++

          <?php 
          $v=10;
          $v1=10;
          $s= ++$v;
          $s1= $v1++;
          echo $s;//11
          echo $s1;//10
          ?>	
      

      也前++先自加在取值,后++先取值后自家加

    • 自赋值运算符

      针对数字+=,-=,*=,/=,%=

      针对字符串 .=

    • 比较运算

      针对数字的大小进行比较的运算

      如果不是数字,会自动转换为数字

      包括:>,>=,<,<=,==,! = , = = =,! = =

      所有比较运算符:运算的结果只有两个可能:true或false

      等于(==):模糊

      全等于( = = =):严格比较数据类型一样

    • 逻辑运算符

      1.逻辑与 &&

      只有两个条件都为真的时候,结果才是真(true)

      2.逻辑或 ||

      只要有任意条件为真,结果就是真

      3.逻辑非 !

      就是对一个布尔值进行"取反"操作

      ! true 结果为:false

      ! false 结果为: true

  • 错误抑制符 @

    在一个表达式出现错误的时候,可能将错误"隐藏"掩盖起来不输出。

    通常,该符号用于实际运行环境中的一些条件非我们(程序员)能控制的情形。如果出现该情形并没有报错,则我们可以抑制该错误的显示(只是该错误不显示,不是没有错误了)

  • 条件运算符

    只有一个条件运算符,形式为:

    表达式1 ? 表达式2 : 表达式3

        <?php 
        $v=10;
        $v1=20;
        $v2 = $v1 / $v ? "1" : "2";
        echo $v2; //1
        ?>
    
  • if分支结构
    • 单分支
    • 双分支
              if (条件)
              {
                  if(条件)
                  {
                     .....
                  }
                  else
                  {
                      .......
                  }
      
              }
              else
              {
                .........  
              }
      
    • 多分支
          if (条件判断)
          {
            //分支1
          }
          elseif(条件2){
              //分支2
          }
          elseif(条件3){
              //分支3
          }
          else{
              //最后的else分支,可以没有!
          }
      
  • switch分支
            switch (表达式或变量)
            {
                case1:
                    分支语句1;
                    break;
                case2:
                    分支语句2;
                    break;
                 .......
                 default:
                    默认分支;
            }
    
  • while循环语句
        <?php 
        $v=10;
        echo $v;
        while($v)
        {
    
        echo "ha";
        $v--;
        }
        ?>
    
    • do --while()循环
      <?php
          do{
              
          }while(条件)
      

do --while是不管条件满不满足先执行一次

  • for 循环
    <?php
        for(循环变量初始化;循环条件判断;循环变量的改变){
            循环体....
        }
    ?>
    

循环可以嵌套

  • 循环中断

    循环是按给定的条件,只要条件满足就会继续执行循环体

    但我们也可以在循环过程中,人为将循环中断。

    • continue中断

      中断当前正在进行的循环体(即后续语句不在执行),继续下一次循环要执行的语句。

      格式:

      continue [$n];

      表示要中断第几层的循环,继续该层循环的下一次,其中$n可以省略,如果省略,表示1,就是中断当前层的循环。

    • break中断

      即停止当前正在进行的循环体,去执行循环体之后的语句

      break [$n];

      表示要中断第几层的循环,继续该层循环的下一次,其中$n可以省略,如果省略,表示1,就是中断当前层的循环。

函数

      function 函数名(){
          函数体
      }
  • 函数定义
     	function 函数名 ($形参1,$形参2...){
            函数体;   
        }
    

    函数调用形式:

    函数名(实参1,实参1,1,实参…)

  • 函数参数的传值方式

    实参是一个变量的情况,就是两个变量的传值方式。默认情况下是值传递。

    可以使用 & 符号设定为引用传递

    	function f1($p1,&$p2...){
            ....
        }
    
  • 函数返回值

    一个函数在执行结束时,可以让其返回一个数据,这就是函数的返回值.

语法:

return 要返回的数据;

  • 可变函数

    所谓可变函数,就是函数名是一个变量的情形。可变函数实际上就是在调用函数的时候,使用一个变量来表示函数

    	function f1(){
            ....
            }
        $f='f1';
        $f();//调用了函数f1,这就是可变函数
    
  • 匿名函数

    就是一个“定义时没有名字"的函数

        $f1=function (形参...){
            ...........
        };
    
        $f(实参);//这就是调用该函数
    
  • 跟函数有关的函数

    function_exists(‘函数名’) //判断一个函数是否已经存在

    func_get_arg($n) //在函数内部可用,用于获得第N个实参

    func_get_args() //在函数内部可用,用于获得所有实参

    func_num_args() //在函数内部可用,用于获得实参的个数

  • 常用数学函数
        max    取得若干数中的最大值
        min	   取得若干数中的最小值
        round  对某个数据进行四舍五入
        cdil	对某个数"向上取整"将一个数据往上找出其小的一个整数
        floot	对某个数"向下取整"将一个数据往下找出其大的一个整数(含其本身)
        abs		取某个数据的绝对值
        sqrt	计算某个数的开方值
        pow		对某个数进行"幂运算" //$n1=pow(3,2)//3的2次
        rand	获得某两个数之间的随机整数
        mt_rand	获得某两个数之间的随机整数(含两个数),比rand更快
    
    
    
  • 常用时间函数、
    time  		获得当前时间(精确到秒)
    microtime  	 获得当前时间(精确到微秒)
    mktime		创建一个时间数据,参数为时,分,秒,月,日,年
    date		将一个时间转换为某种字符串形式
    idate		 取得一个时间的某个单项数据值,比如idate("Y")取得年份数
    strtotime	 将一个字符串"转换"为时间值
    date_default_timezone_set    在代码中设置"时区"
    date_default_timezone_get     在代码中获取"时区"
    
  • 作用域
    • 局部变量

      一种特殊的局部变量

          function xx(..){
              static $s1=10; //此时,$s1就是静态变量
          }
      

      静态变量的特点:

      ​ 静态变量的值不会再函数调用结束时被销毁,而是会一致保留。也就是说,当我们再次调用函数时,该变量(的值)还是能继续使用

    • 全局变量

      就是函数外部范围的作用域,其中定义的变量就是全局变量

      全局变量只能再其所在的全局作用域中可以直接使用(访问)

    • 超全局作用域和超全局变量

      包括局部作用域和全局作用域的整个作用域范围。

      超全局变量可以再所有范围中使用

          <?php
              $v1=1;
              function func(){
              echo $GLOBALS['V1'];//使用外面v1变量
          }
      	func();
           ?>
      
      	<?php
              $v1=1;
              function func(){
                  global $v1;
              echo $v1;//使用外面v1变量
          }
      	func();
           ?>
      

      $GLOBALS数组(变量)和global关键字,都能实现,在局部作用域中使用全局变量。

    文件加载

    将一个(别的)文件包含到当前文件中,成为当前文件运行过程中的一部分。

    语法:

        include "要载入的文件路径";//可以用相对路径也可以用绝对路径
    	include_once "要载入的文件路径";
    	require "要加载的文件";
    	require_once "要加载的文件";
    

    获取物理路径(绝对路径)的方式:

    ​ _ DIR _ :表示当前文件所在路径,由它可以构建出绝对路径

    getcwd():表示当前正在访问的网页路径,由它可以构建出绝对路径。

    错误处理

    出错程序运行时的错误

    • 常见错误代号
      • E_NOTICE

        提示性错误,轻微

        错误发生后,后面的程序继续执行

      • E_WARNING

        警告性错误,稍微严重

        错误发生后,后面的程序继续执行

      • E_ERROR

        严重错误 / 致命错误

        错误发生之后,后面的程序不能再执行

      • E_PARSE

        语法错误(语法解释错误)

        语法解释错误,是直接就不能运行程序

      • E_USER_NOTICE

        用户自定义的警告错误

      • E_USER_WARING

        用户自定义的警告错误

      • E_USER_ERROR

        用户自定义的严重错误

      • E_ALL

        它是一个代表”所有“错误的代号

    • 自定义触发错误
      trigger_error("自定义错误提示内容",自定义错误的代码)
      
          <?php
          $n=10;
          if ($n==10) {
              trigger_error("错误");
          }
          else{
              echo $n;
          }
      
          ?>
      
    • 自定错误
          <?php
          //声明,我们自己使用自己的函数来处理错误
          //set_error_handler("处理错误的自己的函数名")
          set_error_handler('my_error');
         //定义函数
          function my_error($errCode, $errMsg, $errFile, $errLine)
          //$errCode错误代号 $errMsg错误信息 $errFile错误文件 $errLine错误行号
          {
              //错误提示
              echo "<h1>错误了</h1>";
          }
          echo $n;
      
          ?>
      
          <?php
          set_error_handler('my_error');
          function my_error($errCode, $errMsg, $errFile, $errLine)
          {
              echo "<h1>错误了</h1>";
              echo "<br>错误行号:". $errLine;
              echo "<br>错误信息:".$errMsg;
              echo "<br>错误文件:".$errFile;
              echo "<br>错误代号:".$errCode;
           }
          echo $n;
      
          ?>
      

    字符串常用函数

    字符串输出
    • echo

      输出一个或多个字符(不是函数,是语言结构)

    • print

      输出一个字符串

    • print_r

      输出变量得较为详细得信息

    • var_dump

      输出变量得完整信息

    实例:

        <?php
        $arr=['中','国',12,14];
        echo $arr;
        echo "<br>";
        print $arr;
        echo "<br>";
        print_r($arr);
        echo "<br>";
        var_dump($arr);
        ?> 
    

    结果:

        Array
        Array
        Array ( [0] =>[1] =>[2] => 12 [3] => 14 )
        array(4) { [0]=> string(3) "中" [1]=> string(3) "国" [2]=> int(12) [3]=> int(14) }
    
    字符串去除与填充
    • trim

      消除一个字符串两端得空白字符或指定字符(空白字符包括,空格,\n,\r,\t等)

    • ltrim

      消除一个字符串左边得空白字符或指定字符

    • rtrim

      消除一个字符串右边的空白字符或指定字符

    • str_pad

      将一个 字符串使用指定的字符填充到指定的长度

字符串连接与分割
  • implode

    将一个数组的值连接起来组成一个字符串

  • join 同 implode
        <?php
        $a=['qq','aa','lll'];
        var_dump($a);
        echo "<br>";
        $v2=implode('-',$a);
        echo $v2;
        $v3=implode('',$a);
        echo "<br>";
        echo $v3;
        echo "<br>";
        $v4=join('-',$a);
        echo $v4;
        echo "<br>";
        $v5=join('',$a);
        echo $v5;
        ?> 
    

    结果:

        array(3) { [0]=> string(2) "qq" [1]=> string(2) "aa" [2]=> string(3) "lll" }
        qq-aa-lll
        qqaalll
        qq-aa-lll
        qqaalll
    
  • explode

    将一个字符串使用指定的字符分割为一个数组

        <?php
        $a='a b c d e f g';
        $b=explode(' ',$a);
        var_dump($b);
        ?>
    

    结果:

    	array(7) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" [5]=> string(1) "f" [6]=> string(1) "g" }
    
  • str_split

    将一个字符串按指定的长度分割为一个数组

        <?php
        $a='abdgagdfdfda';
        $b=str_split($a,4);
        var_dump($b);
        ?>
    

    结果:

    	array(3) { [0]=> string(4) "abdg" [1]=> string(4) "agdf" [2]=> string(4) "dfda" }
    
字符串截取
  • substr

    获取一个字符串中指定位置开始指定长度的字符串

        <?php
        $str=substr('adfdfddfdfa',4);
        echo $str;
        ?>
    

    结果:

    	fddfdfa
    
  • strstr

    获取一个字符串中某个指定字符首次出现的位置起,到最后结尾处的字符

        <?php
        $str=strstr('abc.adg.123.txt','.');
        echo $str;
    
    

    结果:

    	.adg.123.txt
    
  • strrchr

    获取一个字符串中某个指定字符最后一次出现的位置起,到最后结尾处的字符。

        <?php
        echo strrchr('abcd12.3.txt','.');
        ?>
    

    结果:

    	.txt
    
字符串替换
  • str_replace

    将一个字符串中的指定字符,替换为给定的新字符

        <?php
        $v1='afddfddgfd23432dfa';
        $v2=str_replace('a','6',$v1);
        echo $v2;
    
    
    	6fddfddgfd23432df6
    
  • substr_replace

    将一个字符串中指定位置开始的指定个数的字符,替换为给定的新字符,也就是把字符串的一部分替换为另一个字符串

        substr_replace(string,replacement,start,length)
            <?php
        $v1='afddfddgfd23432dfa';
        $v2=substr_replace($v1,'1',2,5);
        echo $v2;
    

    结果:

    	af1gfd23432dfa
    
字符串长度与位置
  • strlen

    获取字符串的字节长度

  • strpos

    获取一个字符串中某个字符串首次出现的位置

    	strpos('abcd.12.3.txt','.');//结果是4
    
  • strrpos

    获取一个字符串中某个字符串最后一次出现的位置

    	strrpos('abcd.12.3.txt','.');//结果是 9
    	strrpos('abcd.12.3.txt','cd');//结果是 4
    
字符转换
  • strtolower

    将一个字符串转为小写

  • strtoupper

    将一个字符串转换为大写

  • lcfirst

    将一个字符串的首字母转为小写

  • ucfirst

    将一个字符串的首字母转换为大写

  • ucwords

    将一个字符串中的所有单词的首字母转换为大写

数组

数组下标

数组下标可以是整数或者字符串

  • 整数下标

    可以使用任意整数,也可以不显式使用下标,此时默认就是整数下标。

    而且,从前往后,每一个没有使用下标的单元,系统给其分配的下标为之前所用过整数下标的最大值+1(对于第一个是0)

    $arr=arry('a',2=>'b','c','x'=>'d','e');//其下标分别为:0,2,3,'x',4
    $arr1=array(5=>'a',2=>'b','c','x'=>'d');
    //其下标分别为5,2,6,'x'
    
    $arr['x']=5;  //这一行,会自动创建一个数组
    $arr[]=6;     //此时下标就是0
    $arr[]=8;     //下标为1
    
  • 索引数组

    通常是指一个数组的下标是从0开始的连续的整数

  • 关联数组

    通常是指一个数组的下标都是字符串

    	$person=array('name'=>'张三','age'=>18,'edu'=>'大学','salary'=>10000);
    
PHP数组的维数
    <?php
    $arr=[
    [1,2,3],[4,5,6],[7,8,9]
    ];
    $arr1=[1,2,3,4,5];
    $len=count($arr);
    $len1=count($arr1);
    echo $len; //3
    echo "<br>";
    echo $len1;//5
    ?>
数组遍历foreach

使用foreach 语句遍历数组

    <?php
    $arr1=['a'=>1,'b'=>6];
    foreach ($arr1 as $value) {
        echo $value;
        echo "<br>";
    }
    foreach($arr1 as $key=>$value)
    {
    echo "<br>";
    echo $value;
    echo "<br>";
    echo $key;
    }
    ?>

结果:

    1
    6

    1
    a
    6
    b
数组指针操作函数

$re = current( $arr1); //取得 数組中当前指针所在单元的值;

$re = key( $arr1 ); //取得数组中当前指针所在单元的键(下标) ;

$re = next( $arrl ); //将数组中的指针往后移动-一个位置,并取得新位置上的值;

$re = prev( $arr1 ); //将数组中的指针往前移动一个位置,并取得新位置上的值;

$re = end( $arr1 ); //将数组中的指针移动到最后一个位置,并取得新位置上的值;

re=reset(re = reset(re=reset(arr1); //将数组中的指针移动到最前一个位置,并取得新位置上的值;

常用数组函数
  • max()

    获取一个数组中的最大值

  • min()

    获取一个数组中的最小值

  • count()

    获取一个数组的元素个数

  • in_array()

    判断一个数据是否在指定数组中

    	$b=in_array($数组,数据);//结果为true或false
    
  • range()

    生成某个范围的连续值得数组,比如range(3,9)会得到数组,array(3,4,5,6,7,8,9);

  • array_keys()

    取得一个数组中得所有"键"并放入一个索引数组中

  • array_values()

    取得一个数组中得所有"值"并放入一个索引数组中

数组查找函数
  • in_array()

    在一个数组中找是否存在某个数据

  • array_search()

    在数组中搜索给定得值,如果成功则返回相应得键名

  • array_key_exists()

    检查给定得键名是否存在于数组中

PHP+MYSQL

PHP连接数据库
  • mysqli_connect()
	mysqli_connect([host][username][password][dbname][port])
    dbname 是数据库名称
     port  是MYSQL服务器的端口号,默认是3306
	<?php
    $db_host='localhost';
    $db_user='root';
    $password='root';
    $port='3306';

    $link=mysqli_connect($db_host,$db_user,$password);
    var_dump($link);

    ?>	
  • @运算符

    PHP支持一个错误控制运算符@,当将其放置在一个php表达式之前,该表达式可能产生的任何错误信息都被忽略掉(不包含语法错误)

    	<?php
        $db_host='localhost';
        $db_user='root';
        $password='root1';
        $port='3306';
    
        if(!$link=@mysqli_connect($db_host,$db_user,$password))		{
            //如果错误了就返回bool(false),正确的话就正常执行。
            die();//中止程序向下运行
       	 }
    	var_dump($link);
        ?>
    

  • exit()或die()

    输出一个消息并且退出当前脚本,等同于die()

    	void exit($string);
    	输出$string的值,并终止程序的运行
    
    选择数据库

    语法:

    	musqli_select_db(mysql $link,string $database);
         //如果成功放回TRUE,失败返回False
    
  • 设置数据库返回字符集
     	mysqli_set_charset($link,$charset);
        //$charset为要设置得字符集
    
执行各种SQL语句
  • mysqli_query()
    	mysqli_query($link,$query);
    	//query是查询字符串
    	//mysqli_query()仅对SELECT,SHOW,DESCRIBE语句返回一个mysqli_result结果集对象,如果查询执行不正确则返回FALSE,对于其他类型得SQL语句,mysqli_query()在执行成功时返回TRUE,出错时返回FALSE。
    

    注意:

    ​ 查询字符串不应以分号结束,和命令行模式下有区别

  • mysqli_free_result()

    释放与结果集相关得内存

    	mysqli_free_result(mysqli_result $result);
    	//$result为结果集对象
    

    内存中的变量何时消失:
    1.网页执行完毕,所有与本网页相关的变量自动销毁

    2.手动销毁指定的

从结果集获取一行数据
  • mysqli_fetch_row()

    从结果集中取得一行作为枚举数组

    	mysqli_fetch_row(mysqli_result $result)
    

    返回根据所取得的行生成的数组,如果没有更多行则返回FALSE

    mysqli_fetch_row()从指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从0开始。

  • mysql_fetch_assoc()

    从结果集中获取一行数据,并作为关联数组(字段名作下标)返回

    	$arr=mysql_fetch_assoc($result);
    

    返回值:从结果集取得的行生成的关联数组,如果没有更多行则返回false

  • mysqli_fetch_array()

    从结果集中取得一行作为关联数组,或数字数组,或者二者兼有。

    	mysqli_fetch_array(mysqli_result $result)
    

    第二个参数

     	mysqli_fetch_array(mysqli_result $result,MYSQLI_ASSOC)
         //返回关联数组
         mysqli_fetch_array(mysqli_result $result,MYSQLI_NUM)
         //返回枚举数组
    
  • mysqli_fetch_all()

    从结果集中取得所有行作为关联数组,枚举数组,或二者兼有。

    	mysqli_fetch_all(mysqli_result $result) 
    
从结果集中获取记录数
  • mysqli_num_rows()

    取得结果集中行的数目

    	mysqli_num_rows(mysqli_result $result)
    

    此命令仅对select有效

  • mysqli_affected_rows()

    取得前一次mysql操作所影响的记录行数

    	mysqli_affected_rows(mysqli $link)
    
实战笔记
  • hearder()
     	 hearder("refresh:3;url=./list.php");
    	 告诉浏览器等待三秒跳转到指定的页面
    

目录操作

  • 创建目录mkdir()
    	mkdir(string $pathname [,int $mode=0777][,bool $recursive=false])
         //$patchname指定目录的路径
         //$mode默认的mode是0777,就是最大访问权限,在windows下被忽略
         //$recursive如果指定的路径的上级目录不存在,则也会递归创建
    
    	<?php 
    	$patch='./list/a/b/c/d';
    	mkdir($patch,0777,true);
    
  • 判断当前文件是目录还是文件 is_dir()
        is_dir($dirname)
    
  • 判断目录或文件是否存在 file_exists()
    	file_exists($dirname)
    
  • 删除目录 rmdir()
        rmdir(string $dirname)
        //该目录必须为空
    
  • 更改目录访问权限 chmod()

    改变文件的访问权限

    	chmod(string $filename,int $mode)
    
  • 取得目录或文件的权限 fileperms()
    	int fileperms(string $filename)
         //以10进制返回文件的权限
    
  • 重命名或移动文件或目录 rename()
    	rename(oldname,newname)
    

    如果原目录和新目录都位于同一个父目录下,则认为是改名

    如果原目录和新目录位于不同父目录下,则认为是移动

  • 打开目录 opendir()

    打开目录句柄,可用于之后的closedir(),readdir(),和rewinddir()调用中

    	resource opendir(string $path)
        //成功返回目录句柄的resource,失败返回false
    
  • 读取目录中条目 readdir()

    从目录句柄中读取条目

    	string readdir(resource $dir_handle)
    

    返回目录中下一个文件的文件名。文件名以在文件系统中排序返回,成功返回文件名,失败返回false

  • 显示中文目录或文件 iconv()

    字符串按要求的字符编码来转换

    	string iconv(string $old_charset,string $new_charset,string $str)
    
  • 关闭目录句柄 closedir()

    关闭由dir_handle指定的目录流。流必须之前被opendir()所打开.

    	void closedir(resource $dir_handle)
    

PHP操作文件

  • 打开文件 fopen()

    打开文件或URL

    	resource fopen(string $filename,string $mode)
        //$filename 指定要打开的目标文件或URL
        //$mode  指定文件的打开方式 r,w,a,x......
    
  • 关闭文件 fclose()
    	bool fclose(resource $handle)
    
  • 读取文件内容
    • 读取指定大小的文件内容fread()
      	string fread(resource $handle,int $length)
      
    • 获取文件内容大小 filesize()
      	filesize($filename);
          //$filename文件名
      
    • 读取一行文件 fgets()

      从文件指针中读取一行

      	string fgets(resource $handle [,int $length])
          //$length从handle指向的文件中读取一行并返回长度最多为length-1字节的字符串。碰到换行符,EOF或以读取了length-1字节后停止
      
    • 读取文件内容到数组中 file()

      把整个文件读入一个数组中

      	array file(string $filename[,int $flags=0])
           //$filename 文件的路径
           //附加选项。FILE_USE_INCLUDE_PATH(1),在include_path中查找文件
           //FILE_IGONRE_NEW_LINES(2),在数组的每个元素末尾不添加换行符
           //FILE_SKIP_EMPTY_LINES(4),跳过空行
      

      不需要打开文件和关闭文件

    • 把文件内容读到字符串中 file_get_contents()

      把整个文件读入一个字符串

      	string file_get_contents(string $filename)
      
          <?php
          //读取远程网页数据
          $filename='http://www.baidu.com';
          //不用打开和关闭文件
          $str=file_get_contents($filename);
          //打开数组
          print_r($str);
          ?>
      
    写入文件
    • 将一个字符串写入文件
          int file_put_contents(string $filename,mixed $data[,int $flags=0])
              //filename要被写入数据的文件名
              //data要写入的数据
      
    • 写入文件
      	int fwrite(resource $handle,string $string)
      
    拷贝文件

    将文件按从source拷贝到dest

    	bool copy(string $source,string $dest)
         //如果目标文件存在则会覆盖
    
    删除文件
    	bool unlink(string $filename)
         //成功时返回true,或者失败时返回false
         //删除文件不会进入回收站
    
    其他的文件操作函数
    • filesize()

      可以获取文件大小,单位为字节

    • is_writable()

      判断文件是否可写

    • is_readable()

      判断文件是否可读

    • feof()

      判断文件指针是否到达文件末尾

    • filectime()

      获取创建文件的时间

    • fileatime()

      获取文件最新访问的时间

    • filemtime()

      获取文件最后修改时间

图像

创建空画布图像
	resource imagecreatetruecolor(int $width,int $height)

成功返回图像资源,失败返回false

创建基于已有图像的图像

由文件或URL创建一个新图像

	resource imagecreatefrompng(string $filename)
    //$filename为图像的完整路径
     imagecreatefromjpeg()imagecreatefromgif()
输出图像到浏览器或保存文件

以jpg/gif/png格式将图像输出到浏览器或文件

	bool imagejpeg(resource $image[,string $filename[,int $quality]])
    imagegif(),imagepng()格式都一样但没有第三个参数
图像操作
  • 为图像分配颜色
    	int imagecolorallocate(resouce $image,int $red,int $green,int $blue)
    
  • 给画布填充背景颜色
    	imagefill(图像资源,x坐标,y坐标,颜色值)
    
  • 水平的画一行字符串
    	imagestring(resouce $img,int $font,int $x,int $y,string $s,int $col)
    
	<?php
    //创建一个画布
    $img =imagecreatetruecolor(1080,640);

    //分配颜色
    $color1=imagecolorallocate($img,0,0,0); //黑色
    $color2=imagecolorallocate($img,255,0,0);//红色


    //填充背景色
    imagefill($img,0,0,$color1);

    //imagestring(图像资源,字号大小,X坐标,Y坐标,字符串,文字颜色)
    //往图像上写入一行字符串(非中文)
    $str="welcome to start";
    imagestring($img,5,0,0,$str,$color2);

    //输出图像到浏览器
    header('Content-Type:image/png');
    imagepng($img);

    //销毁图像资源
    imagedestroy($img);
  • 获取画布的宽度和高度
    	imagesx($img);
    	//$img是图像资源
    
全局变量数组$_FILES
  • $_POST数组中保存的是普通表单元素数据
  • $_FILES数组中保存的是上传文件的 信息

    $_FILES数组中有5个元素

    1.上传文件员名称

    2.文件类型

    3.上传文件数据临时存放位置

    4.上传过程中是否有错误发生

    5.上传文件大小

COOKIE操作

  • 添加COOKIE数据

    向客户端发送一个HTTP cookie

    	bool setcookie(string $name[,string $value][,int $expire=0][,string $path][,string $domain][,bool $secure =false][,bool $httponly=false])
    

    1.$name cookie的名称

    2.$value cookie的值,会自动进行url编码。接收时会进行url解码。cookie值得类型只能是标量数据类型

    3.$expire cookie的有效时间

    4.$path cookie的服务器路径

    5.$domain cookie的域名

    6.$secure 规定是否通过安全的https连接传输cookie

  • 读取cookie数据

    全局变量$_COOKIE

    	<?php
        echo "用户名:".$_COOKIE['username']."<br>";
        echo "密码:".$_COOKIE['password']."<br>";
    
  • COOKIE设置

    默认cookie的有效期是关闭浏览器时,自动失效。该cookie称为临时cookie

    一般用time() + N 表示新的时间戳,在当前时间点再加上N秒后,产生一个新的时间戳

     //添加COOKIE数据:目录有效性,COOKIE只在public目录下生效
          setcookie("username","admin",time()+7*24*3600,"/public");
            setcookie("password","123456",time()+7*24*3600,"/public");        
    
  • COOKIE路径有效性

    设置cookie只能在指定的目录及其子目录下有效

    $path默认为"/",代表当前网站根目录,在当前目录及其所有子目录都可以使用。

    由于浏览器每次请求时,携带到服务器端很多的cookie数据,会导致请求数据变得庞大,将cookie划分各个路径中,减少每个路径下cookie的数量

    	setcookie("username","admin",time()+7*24*3600);
        setcookie("password","123456",time()+7*24*3600); 
    
  • COOKIE域名有效性

    给一个cookie指定访问的域名

    默认情况下,cookie在当前域名下有效。如果设置为主域,则在所有域名下都可以使用。如果设置为子域名,则只能在子域名下使用该COOKIE

    	setcookie("username","admin",time()+7*24*3600,'/','2018.cn')
    
  • 删除COOKIE数据
    1.设置cookie有效性为过去的某一个时间
    		setcookie("username","admin",time()-1)
             setcookie("password","1235",time()-1)
    
    2.设置cookie的值为false或空字符串
    3.不设置cookie
  • COOKIE总结

    1.COOKIE储存在客户端,相对来说不太安全

    2.COOKIE储存的数据类型,只能是字符串

    3.COOKIE储存的数据容量,大约只能储存4KB数据

    4.浏览器可以禁用缓存,也可以禁用COOKIE,则COOKIE功能就失效

SESSION

  • SESSION概述

    1.session对象储存特定用户的会话数据

    2.session将会话数据储存在服务端

    3.session是基于cookie技术的,没有cookie就没有session

    4.session在整个用户会话中,一直存下去,一个用户会话失效,从用户登录开始,到与用户登录结束。

    5.session储存的内容类型,不限于字符串

    6.session储存的数据量要比cookie大的多

    7.session数据储存在服务端,更安全,可靠。

  • 开启SESSION会话功能

    启动新会话或重用现有会话

    	bool session_start(void)
    

    SESSION变量默认是不存在的,与_SESSION变量默认是不存在的,与SESSION _ POST,$ _ GET,$ _FILE。不一样,必须先开启SESSION才能使用$ _SESSION变量。

    每个需要session数据的页面,都要开启session功能

  • 添加SESSION数据

    对session的管理(增删改查),都是通过超全局数组$ _ SESSION进行的

    	$_SESSION[key]=value
    

    一个网站不管添加多少个SESSION数据,最终在浏览器端只储存一个SESSION的ID值。

  • 读取SESSION数据
    	$value=$_SESSION[key]
    
  • 删除SESSION数据

    使用unset()函数

    	unset($_SESSION['username']);
    	$_SESSION=array();//删除整个session数组
    

    删除SESSION数据,并没有删除SESSION文件

  • 销毁SESSION文件

    删除当前的SESSION文件,不影响其他的SESSION文件。

    	session_destroy();
    

面向对象

面向对象是以事物(对象)为中心的编程思想

  • 类的成员属性

    类的成员属性就是指某个类具有的公共的特征,特性。类中定义的变量就是类的成员属性。

    类的成员属性和普通变量的区别,类的成员属性必须要带权限修饰符,而普通变量不需要

  • 权限修饰符
    1.public(公共权限)

    在任何地方都可以访问,主要包括,类外,本类中,子类中都可以访问。

    2.private(私有权限)

    只能在本类中被访问,在类外和子类中都无权访问

    3.protected(受保护的权限)

    只能在本类中和子类中被访问,在类外不能被访问

  • 创建类的实例对象
    	$obj = new Student()
    
        <?php
        class   Student
        {
            public $name = 'zhang';
            public $age  = 18;
    
        }
        $obj = new Student();
    
        //输出当前对象的属性
        echo $obj->name;
        //给成员属性重新赋值
        $obj->name ='wei';
        echo $obj->name;
        //给当前对象添加一个新属性
        $obj->borth=2020;
        echo $obj->borth;
        //删除属性:使用unset()可以删除变量,数组元素,对象属性等
        unset($obj->age);
        //
        ?>
    
    	<?php
        class Student
        {
            public function showInfo($name, $age)
            {
                echo "{$name}的年龄是{$age}岁!";
            }
        }
    
        //创建类的对象
        $obj=new Student;
        //调用对象的方法
        $obj->showInfo('zhang',12);
        ?>
    
  • 伪变量$this的使用

    在php中,使用$this变量来代替当前对象,例如 $this->name=“张三”

    $this代表当前对象,是到当前对象的一个引用。

    只有创建对象后,$this变量才存在。类不会自动运行

  • 类常量

    常量的值必须是一个定值,不能修改,也不能删除

    常量在内存中只有一份,不管创建多少个对象

    类常量可以极大节省服务器内存,可以被所有对象去共享

    常量的定义:

    类常量没有权限,只有属性和方法才会有权限

    使用const来定义类的常量(局部常量),只能在局部作用域下使用,define()定义常量是全局常量,在任何地方都可以使用

    	const 常量名=常量值;
    
    	//类常量,不用创建对象,直接就能访问
    	ClassName::常量名;
    
  • 构造方法

    当使用new关键字创建对象时,第一个自动调用的方法,就是构造方法。

    构造方法的名称是固定的

    	void _construct([mixed $args[,$...]])
    

    构造方法可以带参数,也可以不带参数,构造方法不是必须的,是可选的。

        <?php
        class Student
        {
            //定义私有成员属性
            private $name;
            private $age;
            private $sex;
            //公共的构造方法
            public function __construct($name2, $age2, $sex2)
            {
                $this->name = $name2;
                $this->age =$age2;
                $this->sex=$sex2;
            }
            public function showinfo()
            {
                $str="姓名:{$this->name}";
                echo $str;
            }
        }
    
        $obj=new Student("zhang",25,"男");
        $obj->showinfo();
    	//姓名:zhang
    
  • 析构方法

    对象销毁前自动调用的方法,就是析构方法

    析构方法的名称是固定的:

    	void _destruct(void)
    

    析构方法不带任何参数。作用就是垃圾回收工作

  • 静态属性和静态方法

    static关键字修饰的属性,就是静态属性。

    static关键字修饰的方法,就是静态方法。

    静态属性:就是类的属性,与类相关,与对象无关

    静态方法:就是类的方法,与类相关,与对象无关。

    类的东西(类常量,静态方法,静态属性),通过“类名::”来调用。静态属性或静态方法在内存中只有一份,被所有对象去共享。它的好处就是节省内存。

        <?php
        class Student
        {
            private static $count=60;
            //公共的静态方法
            public static function showinfo()
        {
            $str="班级认数:".Student::$count;
            echo $str;
        }
        }
        //在类外访问公共的静态方法
        Student::showinfo();
    
        ?>
            
            //班级认数:60
    
  • self关键字使用

    $this是指向当前对象的指针,而self是指向当前类的指针

    this关键字用来调用对象的属性和方法,self用来调用类常量,静态属性,静态方法,this关键字用来调用对象的属性和方法,self用来调用类常量,静态属性,静态方法,thisselfthis关键字只能在成员方法中使用,self关键字可以在成员方法和静态方法中使用

  • 类的继承
        <?php
        class Student
        {
            public $name="zhang";
            public $age=23;
        }
    
        //定义一个Student的继承类
        class JCHENG extends Student
        {
            public function a(){
                echo $this->name;
            }
    
        }
        $obj=new JCHENG();
        $obj->a();
    	
    	//zhang
    
  • parent关键字

    self代表当前类,parent代表父类

    self和parent可以存在于所有方法(成员方法和静态方法)中

    self用来调用本类的内容,包括:类常量,静态属性,静态方法,成员方法。

    parent用来调用父类的内容,包括,常量,静态属性,静态方法,成员方法。

    	self和parent都使用范围解析符"::"来调用其他内容
    
        <?php
        class Student
        {
            const TITLE ="zhangsan";
            protected static $count=60;
        }
    
        //定义一个Student的继承类
        class JCHENG extends Student
        {
            const TITLE ="lisi";
            protected static $count=160;
            public function showInfo()
        {
                $str="父类常量:".parent::TITLE;
                $str1="子类常量".self::TITLE;
                echo $str;
                echo "<br>";
                echo $str1;
            }
    
        }
        $obj=new JCHENG();
        $obj->showInfo();
    
    
        ?>
            
            //父类常量:zhangsan
    	   //子类常量lisi
    
  • 类的多态

    PHP不支持在同类中方法重写,可在子类中重写方法

    重写要求:
    • 子类中重写的方法,要与父类中的方法同名

    • 子类中重写的方法形参个数,要与父类中的同名方法形参个数一致

    • 子类中重写的方法类型,要与父类中同名方法类型一致

    • 子类中重写的方法的访问权限,不能低于父类中同名方法的访问权限。

    • 父类方法权限为private,子类无法继承,也无法重写

              <?php
      
          class Student
          {
              public function showinfo($a, $b)
              {
                  echo "hahah";
                  echo $a;
                  echo $b;
              }
          }
      
          class Itcast extends Student
          {
              public function showinfo($name, $age)
              {
                  echo "执行";
                  echo $name;
                  echo $age;
              }
          }
      
      
      
          $obj1 = new Itcast();
          $obj1->showinfo("zhang",15);
      
      		//执行zhang15
      
  • 最终类和最终方法

    Final关键字修饰的类,就是最终类

    Final关键字修饰的方法,就是最终方法

    最终类,该类只能实例化,不能被继承,该类十分完善了,不需要升级和拓展

    最终方法:该方法可以被继承,但不能重写。该方法十分完善了,不需要重写了

  • 抽象类和抽象方法

    abstract关键字修饰的类,就是抽象类。抽象类,该类不能直接实例化,必须先继承后再实例化。常用在基础类。

    抽象方法:方法必须先继承后重写,所有的抽象方法都必须要重写,少一个都不行。

    抽象方法没有方法体,必须在子类重写后,再定义方法体

    如果一个类中有抽象方法,该类必须是抽象类

  • 克隆对象

    克隆对象是两个独立的新对象,对象地址不一样

    	$obj = new Student();
    	$obj1 = clone $obj;//克隆新对象$obj1
    
  • 魔术函数
    • __toString()

      将对象转换成字符串时,__toString()会自动调用。

      php不支持对象转字符串,因此,不能使用echo输出一个对象。

    • __invoke()

      当把一个对象当成函数调用时,__invoke()会自动调用

    • __get()

      当访问一个不可访问属性时,__get()魔术方法会自动调用

        <?php
          class Student
        {
              private $name ="张三";
            private $age =24;
              public function __get($n)
            {
                  return $this->$n;
            }
          }
        $obj = new Student();
          echo $obj->name;
      //张三
      
    • __set()

      在给不可访问属性赋值时,__set()会被调用

        <?php
          class Student
        {
              private $name ="张三";
            private $age =24;
      
            //给私有属性赋值
              public function __set($n,$v){
              $this->$n=$v;
              }
      
              //访问私有属性
              public function __get($n)
              {
                  return $this->$n;
              }
          }
          $obj = new Student();
          $obj->name="zhang";
          echo $obj->name;
      
      	//zhang
      
    • __isset()

      当对不可访问属性调用isset()或empty()时,__isset()会被调用

    • __unset()

      当对不可访问属性调用unset()时,__unset()会被调用

    • __call()

      在对象中调用一个不可访问方法时,__call()会被调用

    • __callStatic()

      用静态方式调用一个不可访问方法时,__callStatic()会被调用

    变量序列化

    序列化是将变量转换为可保存或传输的字符串的过程

    反序列化就是在适当的时候把这个字符串再转化为原来的变量使用

    序列化
        <?php
        $arr=array('db_host'=>'root','db_passwd'=>'1234');
    
    
        //将变量转成可保存的字符串
        $str=serialize($arr);
        echo $str;
        //将序列化字符串,保存到记事本
        file_put_contents('./1.txt',$str);
    
    
    反序列化
        <?php
        //序列化字符串,还原成原始变量
        //读取记事本数据
        $str=file_get_contents('./1.txt');
        //将序列化字符串,还远程变量
        $arr=unserialize($str);
        print_r($arr);
    
    
    • 对象序列化

      对象的序列化,与其他变量数据一样

      对象序列化的内容只能包含成员属性

      当序列化对象属性时,serialize()函数会检查类中是否存在一个魔术方法__sleep(),如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。

    静态延时绑定

    如果只有一个类,self和static都代表当前类

    如果在继承范围,self永远代表当前类,static代表最终执行的类

    命名空间

    命名空间是一种封装事物的方法

    在很多地方都可以见到这种抽象概念,在操作系统中目录用来将相关文件分组,对目录的文件来说,它就扮演了命名空间的角色。在PHP中,命名空间用来解决在编写类库或应用程序时名称冲突的问题

    • 定义命名空间的要求

      空间中可以包含任意合法的PHP代码,但只有三种代码受命名空间的影响,它们是:类,函数和常量。

      命名空间通过关键字namespace来声明,命名空间必须是程序脚本的第一条语句

          <?php
          namespace AP;
          class Student
          {
              public $name;
              public $age;
      
              public function __construct($name, $age)
              {
                  $this->name=$name;
                  $this->age=$age;
              }
      
              public function showinfo()
              {
                  echo $this->name;
                  echo $this->age;
              }
          }
      
          <?php
          require_once('./6.php');
          //访问命名空间的类型
          $stu=new AP\Student('zhang',18);
          $stu->showinfo();	
      

      如果想直接使用空间下的类名,使用use导入

      如果类名与当前环境下类名冲突,使用as关键字

         use APP\HOME\Student as Student1
      

    PDO

    PDO是PHP数据对象(PHP data object)的缩写

    PDO拓展为PHP访问数据库定义了一个轻量级的,一致性的接口。PDO作用是统一各种数据库的访问接口,PDO接口中的方法就可以对各种数据进行操作。

    • 创建PDO类的对象
              PDO::__construct(string $dsn[,string $username[,string $password]])
               //例如
               $dsn="mysql:host=127.0.0.1;port=3306;dbname=db;charset=utf8"
          	$username,数据库用户名
          	$password,数据库密码	
      
    • PDO::exec()方法

      执行一条sql语句,并返回受影响的行数

    • PDO::query()方法

      执行一条sql语句,返回一个结果集对象

    • PDO::lastInsertId()方法

      返回最后插入行的ID或序列值

    • PDO::setAttribute()方法

      设置数据库句柄属性

    • PDOstatement::fetch()方法

      从结果集中获取一行,并向下移动指针

    • PDOStatement::fetchALL()方法

      返回一个包含结果集中所有行的数组

    • PDOStatement::rowCount()方法

      返回受上一个sql语句影响的行数

          <?php
          //数据库连接信息
          $dsn="mysql:host=127.0.0.1;port=3306;dbname=test;charset=utf8";
          $username="root";
          $password="root";
      
          //创建PDO类饿对象
          $pdo =new PDO($dsn,$username,$password);
          $sql="INSERT INTO shijian VALUES(21,0,0)";
          //执行sql语句,并返回受影响的行数
          $result=$pdo->exec($sql);
          echo $result;
          //获取最后插入成功的记录的ID
          $id=$pdo->lastInsertId();
          echo $id;
      
          //设置PDO属性:设置从结果集提取数组的类型为关联数组
          $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
      
      
          $sql1="select * from shijian";
          //执行sql语句,返回结果集对象
          $pdosta=$pdo->query($sql1);
          foreach ($pdosta as $arr) {
              print_r($arr);
          }
      
          //获取查询记录数
          echo $pdosta->rowCount();
      
      

    MVC框架

    mvc是模型->视图->控制器的缩写,是一种软件设计典范,用一种业务逻辑,数据,界面显示分离的方法组织代码。在MVC中每个模块只做自己范围内的事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值