zoukankan      html  css  js  c++  java
  • PHP-学习笔记-进阶

    PHP-学习笔记-进阶

    PHP类和对象之定义类的方法

    访问控制的关键字代表的意义为:
    public:公开的
    protected:受保护的
    private:私有的

    我们可以这样定义方法:

    class Car {
    
        public function getName() {
    
            return '汽车';
    
        }
    
    ​}
    
    $car = new Car();
    
    echo $car->getName();

    使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::。

    class Car {
    
        public static function getName() {
    
            return '汽车';
    
        }
    
    ​}
    
    echo Car::getName(); //结果为“汽车”

    重写方法

    建立一个Truck类,扩展Car类,并覆盖speedUp方法,使速度累加50

    对象重载

    方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。

    PHP类和对象之对象的高级特性

     

    对象比较,当同一个类的两个实例的所有属性都相等时,可以使用比较运算符==进行判断,当需要判断两个变量是否为同一个对象的引用时,可以使用全等运算符===进行判断。

    对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值。

    对象序列化,可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。

    Php换行

    echo "123 ".PHP_EOL;

    echo "456 ".PHP_EOL;

    正则表达式的基本语法

    PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字、非反斜线、非空格的任意字符。经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~),例如:

    /foo bar/
    #^[^0-9]$#
    ~php~

    如果模式中包含分隔符,则分隔符需要使用反斜杠()进行转义。

    /http:///

    如果模式中包含较多的分割字符,建议更换其他的字符作为分隔符,也可以采用preg_quote进行转义。

    $p = 'http://';
    $p = '/'.preg_quote($p, '/').'/';
    echo $p;

    分隔符后面可以使用模式修饰符,模式修饰符包括:i, m, s, x等,例如使用i修饰符可以忽略大小写匹配:

    $str = "Http://www.cnblogs.com/";
    if (preg_match('/http/i', $str)) {
        echo '匹配成功';
    }

    元字符与转义 

    正则表达式中具有特殊含义的字符称之为元字符,常用的元字符有:

    一般用于转义字符
    ^ 断言目标的开始位置(或在多行模式下是行首)
    $ 断言目标的结束位置(或在多行模式下是行尾)
    . 匹配除换行符外的任何字符(默认)
    [ 开始字符类定义
    ] 结束字符类定义
    | 开始一个可选分支
    ( 子组的开始标记
    ) 子组的结束标记
    ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
    * 量词,0 次或多次匹配
    + 量词,1 次或多次匹配
    { 自定义量词开始标记
    } 自定义量词结束标记

    w匹配字母或数字或下划线,s匹配任意的空白符,包括空格、制表符、换行符

    d匹配数字

    //下面的s匹配任意的空白符,包括空格,制表符,换行符。[^s]代表非空白符。[^s]+表示一次或多次匹配非空白符。
    
    $p = '/^我[^s]+(苹果|香蕉)$/';
    
    $str = "我喜欢吃苹果";
    
    if (preg_match($p, $str)) {
    
        echo '匹配成功';
    
    }

    元字符具有两种使用场景,一种是可以在任何地方都能使用,另一种是只能在方括号内使用,在方括号内使用的有:

    转义字符
    ^ 仅在作为第一个字符(方括号内)时,表明字符类取反
    - 标记字符范围

    其中^在反括号外面,表示断言目标的开始位置,但在方括号内部则代表字符类取反,方括号内的减号-可以标记字符范围,例如0-9表示0到9之间的所有数字。

    //下面的w匹配字母或数字或下划线。
    
    $p = '/[w.-]+@[a-z0-9-]+.(com|cn)/';
    
    $str = "我的邮箱是Spark.eric@imooc.com";
    
    preg_match($p, $str, $match);
    
    echo $match[0];

    指定预定义的字符集

     

    设置cookie

    PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:

    name( Cookie名)可以通过$_COOKIE['name'] 进行访问
    value(Cookie的值)
    expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
    path(有效路径)如果路径设置为'/',则整个网站都有效
    domain(有效域)默认整个域名都有效,如果设置了'www.cnblogs.com',则只在www子域中有效

    $value = 'test';
    
    setcookie("TestCookie", $value);
    
    setcookie("TestCookie", $value, time()+3600);  //有效期一小时
    
    setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域

    PHP中还有一个设置Cookie的函数setrawcookie,setrawcookie跟setcookie基本一样,唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode。

    setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);

    因为Cookie是通过HTTP标头进行设置的,所以也可以直接使用header方法进行设置。

    header("Set-Cookie:cookie_name=value");

    cookie的删除与过期时间

    通过前面的章节,我们了解了设置cookie的函数,但是我们却发现php中没有删除Cookie的函数,在PHP中删除cookie也是采用setcookie函数来实现。

    setcookie('test', '', time()-1); 

    可以看到将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的。之所以这么设计是因为cookie是通过HTTP的标头来传递的,客户端根据服务端返回的Set-Cookie段来进行cookie的设置,如果删除cookie需要使用新的Del-Cookie来实现,则HTTP头就会变得复杂,实际上仅通过Set-Cookie就可以简单明了的实现Cookie的设置、更新与删除。

    了解原理以后,我们也可以直接通过header来删除cookie。

    header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s GMT', time()-1));

    这里用到了gmdate,用来生成格林威治标准时间,以便排除时差的影响。

    设置session

    在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写。

    session_start();
    
    $_SESSION['test'] = time();
    
    var_dump($_SESSION);
    
     

    session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。

    session_start();
    
    $_SESSION['ary'] = array('name' => 'jobs');
    
    $_SESSION['obj'] = new stdClass();
    
    var_dump($_SESSION);

    默认情况下,session是以文件形式存储在服务器上的,因此当一个页面开启了session之后,会独占这个session文件,这样会导致当前用户的其他并发访问无法执行而等待。可以采用缓存或者数据库的形式存储来解决这个问题,这个我们会在一些高级的课程中讲到。

    删除与销毁session

    删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。

    session_start();
    
    $_SESSION['name'] = 'jobs';
    
    unset($_SESSION['name']);
    
    echo $_SESSION['name']; //提示name不存在

    如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。

    session_start();
    
    $_SESSION['name'] = 'jobs';
    
    $_SESSION['time'] = time();
    
    session_destroy();

    值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。

    session_start();
    
    $_SESSION['name'] = 'jobs';
    
    $_SESSION['time'] = time();
    
    unset($_SESSION);
    
    session_destroy();
    
    var_dump($_SESSION); //此时已为空

    如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

    PHP创建文件

    PHP 写入文件 - fwrite()

    fwrite() 函数用于写入文件。

    fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。

    下面的例子把姓名写入名为 "newfile.txt" 的新文件中:

    实例

    <?php
    $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
    $txt = "Bill Gates
    ";
    fwrite($myfile, $txt);
    $txt = "Steve Jobs
    ";
    fwrite($myfile, $txt);
    fclose($myfile);
    ?>

    请注意,我们向文件 "newfile.txt" 写了两次。在每次我们向文件写入时,在我们发送的字符串 $txt 中,第一次包含 "Bill Gates",第二次包含 "Steve Jobs"。在写入完成后,我们使用 fclose() 函数来关闭文件。

    PHP文件系统之读取文件内容

    PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中。

    $content = file_get_contents('./test.txt');

    file_get_contents也可以通过参数控制读取内容的开始点以及长度。

    $content = file_get_contents('./test.txt', null, null, 100, 500);

    PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。

    $fp = fopen('./text.txt', 'rb');
    while(!feof($fp)) {
        echo fgets($fp); //读取一行
    }
    fclose($fp);
    $fp = fopen('./text.txt', 'rb');
    $contents = '';
    while(!feof($fp)) {
        $contents .= fread($fp, 4096); //一次读取4096个字符
    }
    fclose($fp);

    使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。

    PHP文件系统之判断文件是否存在

    一般情况下在对文件进行操作的时候需要先判断文件是否存在,PHP中常用来判断文件存在的函数有两个is_file与file_exists.

    $filename = './test.txt';
    if (file_exists($filename)) {
        echo file_get_contents($filename);
    }

    如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。

    $filename = './test.txt';
    if (is_file($filename)) {
        echo file_get_contents($filename);
    }

    更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。

    $filename = './test.txt';
    if (is_writeable($filename)) {
        file_put_contents($filename, 'test');
    }
    if (is_readable($filename)) {
        echo file_get_contents($filename);
    }

    PHP文件系统之取得文件的修改时间

    文件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。

    fileowner:获得文件的所有者

    filectime:获取文件的创建时间

    filemtime:获取文件的修改时间

    fileatime:获取文件的访问时间

    其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。

    $mtime = filemtime($filename);

    echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));

    PHP文件系统之取得文件的大小

    通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。

    $filename = 'D:/test.txt';
    
    $size = filesize($filename);

    如果要转换文件大小的单位,可以自己定义函数来实现。

    function getsize($size, $format = 'kb') {
    
        $p = 0;
    
        if ($format == 'kb') {
    
            $p = 1;
    
        } elseif ($format == 'mb') {
    
            $p = 2;
    
        } elseif ($format == 'gb') {
    
            $p = 3;
    
        }
    
        $size /= pow(1024, $p);
    
        return number_format($size, 3);
    
    }
    $filename = 'D:/test.txt';
    
    $size = filesize($filename);
    
    $size = getsize($size, 'kb'); //进行单位转换
    
    echo $size.'kb';

    值得注意的是,没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有子目录以及文件大小的总和,因此需要通过递归的方法来循环计算目录的大小。

    PHP文件系统之写入内容到文件

    与读取文件对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。

    $filename = './test.txt';
    
    $data = 'test';
    
    file_put_contents($filename, $data);

    上例中,$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组连接起来,相当于$data=implode('', $data);

    同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。

    $fp = fopen('./test.txt', 'w');
    
    fwrite($fp, 'hello');
    
    fwrite($fp, 'world');
    
    fclose($fp);

    PHP文件系统之删除文件

    跟Unix系统命令类似,PHP使用unlink函数进行文件删除。

    unlink($filename);

    删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。

    rmdir($dir);

    如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。

    foreach (glob("*") as $filename) {
    
       unlink($filename);
    
    }

    PHP异常处理之抛出一个异常

    从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被执行。

    既然抛出异常会中断程序执行,那么为什么还需要使用异常处理?

    异常抛出被用于在遇到未知错误,或者不符合预先设定的条件时,通知客户程序,以便进行其他相关处理,不至于使程序直接报错中断。

    当代码中使用了try catch的时候,抛出的异常会在catch中捕获,否则会直接中断。

    1、基本语法

     try{
                //可能出现错误或异常的代码
                //catch表示捕获,Exception是php已定义好的异常类
            } catch(Exception $e){
                //对异常处理,方法:
                    //1、自己处理
                    //2、不处理,将其再次抛出
            }

    2、处理处理程序应当包括:
    Try - 使用异常的函数应该位于 "try"  代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
    Throw - 这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch"
    Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象。

    //创建可抛出一个异常的函数
    
    function checkNum($number){
    
         if($number>1){
    
             throw new Exception("异常提示-数字必须小于等于1");
    
         }
    
         return true;
    
     }
    
    //在 "try" 代码块中触发异常
    
     try{
    
         checkNum(2);
    
         //如果异常被抛出,那么下面一行代码将不会被输出
    
         echo '如果能看到这个提示,说明你的数字小于等于1';
    
     }catch(Exception $e){
    
         //捕获异常
    
         echo '捕获异常: ' .$e->getMessage();
    
     }

    上面代码将获得类似这样一个错误:

    捕获异常:: 异常提示-数字必须小于等于1

    例子解释:

    上面的代码抛出了一个异常,并捕获了它:

    创建 checkNum() 函数。它检测数字是否大于 1。如果是,则抛出一个异常。
    在 "try" 代码块中调用 checkNum() 函数。
    checkNum() 函数中的异常被抛出
    "catch" 代码块接收到该异常,并创建一个包含异常信息的对象 ($e)。
    通过从这个 exception 对象调用 $e->getMessage(),输出来自该异常的错误消息

    PHP异常处理之异常处理类

    PHP具有很多异常处理类,其中Exception是所有异常处理的基类。

    Exception具有几个基本属性与方法,其中包括了:

    message 异常消息内容
    code 异常代码
    file 抛出异常的文件名
    line 抛出异常在该文件的行数

    其中常用的方法有:

    getTrace 获取异常追踪信息
    getTraceAsString 获取异常追踪信息的字符串
    getMessage 获取出错信息

    如果必要的话,可以通过继承Exception类来建立自定义的异常处理类。

    //自定义的异常类,继承了PHP的异常基类Exception
    
    class MyException extends Exception {
    
        function getInfo() {
    
            return '自定义错误信息';
    
        }
    
    }
    
    try {
    
        //使用异常的函数应该位于 "try"  代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
    
        throw new MyException('error');//这里规定如何触发异常。注意:每一个 "throw" 必须对应至少一个 "catch",当然可以对应多个"catch"
    
    } catch(Exception $e) {//"catch" 代码块会捕获异常,并创建一个包含异常信息的对象
    
        echo $e->getInfo();//获取自定义的异常信息
    
        echo $e->getMessage();//获取继承自基类的getMessage信息
    
    }

    PHP异常处理之捕获异常信息

    在了解了异常处理的基本原理之后,我们可以通过try catch来捕获异常,我们将执行的代码放在try代码块中,一旦其中的代码抛出异常,就能在catch中捕获。

    这里我们只是通过案例来了解try catch的机制以及异常捕获的方法,在实际应用中,不会轻易的抛出异常,只有在极端情况或者非常重要的情况下,才会抛出异常,抛出异常,可以保障程序的正确性与安全,避免导致不可预知的bug。

    一般的异常处理流程代码为:

    try {
    
        throw new Exception('wrong');
    
    } catch(Exception $ex) {
    
        echo 'Error:'.$ex->getMessage().'<br>';
    
        echo $ex->getTraceAsString().'<br>';
    
    }
    
    echo '异常处理后,继续执行其他代码';

    PHP异常处理之获取错误发生的所在行

    在异常被捕获之后,我们可以通过异常处理对象获取其中的异常信息,前面我们已经了解捕获方式,以及获取基本的错误信息。

    在实际应用中,我们通常会获取足够多的异常信息,然后写入到错误日志中。

    通过我们需要将报错的文件名、行号、错误信息、异常追踪信息等记录到日志中,以便调试与修复问题。

     

    PHP支持哪些数据库

    PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Oracle,PostgreSQL,Access等,这些数据库PHP都能够安装扩展来支持,一般情况下常说的LAMP架构指的是:Linux、Apache、Mysql、PHP,因此Mysql数据库在PHP中的应用非常广泛,我们会在本章中简单的了解Mysql的操作方法。

    PHP数据库扩展

    PHP中一个数据库可能有一个或者多个扩展,其中既有官方的,也有第三方提供的。像Mysql常用的扩展有原生的mysql库,也可以使用增强版的mysqli扩展,还可以使用PDO进行连接与操作。

    不同的扩展提供基本相近的操作方法,不同的是可能具备一些新特性,以及操作性能可能会有所不同。

    mysql扩展进行数据库连接的方法:

    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

    mysqli扩展:

    $link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');

    PDO扩展

    $dsn = 'mysql:dbname=testdb;host=127.0.0.1';
    
    $user = 'dbuser';
    
    $password = 'dbpass';
    
    $dbh = new PDO($dsn, $user, $password);

    PHP数据库操作之连接MySQL数据库

    PHP要对数据库进行操作,首先要做的是与数据库建立连接,通常我们使用mysql_connect函数进行数据库连接,该函数需要指定数据库的地址,用户名及密码。

    $host = 'localhost';
    
    $user = 'code1';
    
    $pass = '';
    
    $link = mysql_connect($host, $user, $pass);

    PHP连接数据库的方式类似于直接在命令行下通过进行连接,类似:mysql -hlocalhost -ucode1 -p,当连接成功以后,我们需要选择一个操作的数据库,通过mysql_select_db函数来选择数据库。

    mysql_select_db('code1');

    通常我们会先设置一下当前连接使用的字符编码,一般的我们会使用utf8编码。

    mysql_query("set names 'utf8'");

    通过上面的步骤,我们就与数据库建立了连接,可以进行数据操作了。

    PHP数据库操作之执行MySQL查询

    在数据库建立连接以后就可以进行查询,采用mysql_query加sql语句的形式向数据库发送查询指令。

    $res = mysql_query('select * from user limit 1');

    对于查询类的语句会返回一个资源句柄(resource),可以通过该资源获取查询结果集中的数据。

    $row = mysql_fetch_array($res);
    
    var_dump($row);

    默认的,PHP使用最近的数据库连接执行查询,但如果存在多个连接的情况,则可以通过参数指令从那个连接中进行查询。

    $link1 = mysql_connect('127.0.0.1', 'code1', '');
    
    $link2 = mysql_connect('127.0.0.1', 'code1', '', true); //开启一个新的连接
    
    $res = mysql_query('select * from user limit 1', $link1); //从第一个连接中查询数据
    
     

    PHP数据库操作之插入新数据到MySQL中

    当我们了解了如何使用mysql_query进行数据查询以后,那么类似的,插入数据其实也是通过执行一个sql语句来实现,例如:

    $sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";
    mysql_query($sql); //执行插入语句

    通常数据都是存储在变量或者数组中,因此sql语句需要先进行字符串拼接得到。

    $name = '李四';
    $age = 18;
    $class = '高三一班';
    $sql = "insert into user(name, age, class) values('$name', '$age', '$class')";
    mysql_query($sql); //执行插入语句

    在mysql中,执行插入语句以后,可以得到自增的主键id,通过PHP的mysql_insert_id函数可以获取该id。

    $uid = mysql_insert_id();

    这个id的作用非常大,通常可以用来判断是否插入成功,或者作为关联ID进行其他的数据操作。

    PHP数据库操作之取得数据查询结果

    通过前面的章节,我们发现PHP操作数据库跟MySql客户端上操作极为相似,先进行连接,然后执行sql语句,再然后获取我们想要的结果集。

    PHP有多个函数可以获取数据集中的一行数据,最常用的是mysql_fetch_array,可以通过设定参数来更改行数据的下标,默认的会包含数字索引的下标以及字段名的关联索引下标。

    $sql = "select * from user limit 1";
    
    $result = mysql_query($sql);
    
    $row = mysql_fetch_array($result);

    可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row函数,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数。

    $row = mysql_fetch_row($result);
    
    $row = mysql_fetch_array($result, MYSQL_NUM); //这两个方法获取的数据是一样的
    
    $row = mysql_fetch_assoc($result);
    
    $row = mysql_fetch_array($result, MYSQL_ASSOC);

    如果要获取数据集中的所有数据,我们通过循环来遍历整个结果集。

    $data = array();
    
    while ($row = mysql_fetch_array($result)) {
    
        $data[] = $row;
    
    }

    PHP数据库操作之查询分页数据

    上一节中,我们了解到通过循环可以获取一个查询的所有数据,在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。

    通过mysql的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。

    假定当前页为$page,每页显示$n条数据,那么m为当前页前面所有的数据,既$m = ($page-1) * $n,在知道了翻页原理以后,那么我们很容易通过构造SQL语句在PHP中实现数据翻页。

    $page = 2;
    
    $n = 2;
    
    $m = ($page - 1) * $n;
    
    $sql = "select * from user limit $m, $n";
    
    $result = mysql_query($sql);
    
    //循环获取当前页的数据
    
    $data = array();
    
    while ($row = mysql_fetch_assoc($result)) {
    
        $data[] = $row;
    
    }

    在上面的例子中,我们使用了$m与$n变量来表示偏移量与每页数据条数,但我们推荐使用更有意义的变量名来表示,比如$pagesize, $start, $offset等,这样更容易理解,有助于团队协作开发。

    PHP数据库操作之更新与删除数据

    数据的更新与删除相对比较简单,只需要构建好相应的sql语句,然后调用mysql_query执行就能完成相应的更新与删除操作。

    $sql = "update user set name = '曹操' where id=2 limit 1";
    
    if (mysql_query($sql)) {
    
        echo '更新成功';
    
    }

    同样的删除可以使用类似以下的代码:

    $sql = "delete from user where id=2 limit 1";
    
    if (mysql_query($sql)) {
    
        echo '删除成功';
    
    }

    对于删除与更新操作,可以通过mysql_affected_rows函数来获取更新过的数据行数,如果数据没有变化,则结果为0。

    $sql = "update user set name = '曹操' where id=2 limit 1";
    
    if (mysql_query($sql)) {
    
        echo mysql_affected_rows();
    
    }

    PHP数据库操作之关闭MySQL连接

    当数据库操作完成以后,可以使用mysql_close关闭数据库连接,默认的,当PHP执行完毕以后,会自动的关闭数据库连接。

    mysql_close();

    虽然PHP会自动关闭数据库连接,一般情况下已经满足需求,但是在对性能要求比较高的情况下,可以在进行完数据库操作之后尽快关闭数据库连接,以节省资源,提高性能。

    在存在多个数据库连接的情况下,可以设定连接资源参数来关闭指定的数据库连接。

    $link = mysql_connect($host, $user, $pass);
    
    mysql_close($link);

     

     

  • 相关阅读:
    Asp.net MVC FluentHTML and Fluent Interface
    Linux上安装Sybase
    Oracle PL/SQL开发利器Toad应用总结(一)PL/SQL Program基本编写、调试
    ELMAH——可插拔错误日志工具
    用SQLMonitor监视SQL*Net
    如何得到自增id值
    SQL Server ID自增列重新从1开始算起
    加载TreeView并设置复选框
    编程设置最小化、最大化、关闭按钮 相关讨论
    在 VB.NET 编程中使用数组
  • 原文地址:https://www.cnblogs.com/pureqh/p/10138553.html
Copyright © 2011-2022 走看看