• pdo的使用


    PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。

    PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

    PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用,无法运行于之前的PHP版本。

    pdo功能:

    1.操作其它数据库
    2.事务功能
    3.防止SQL注入攻击

    操作其他数据库:

    //造PDO对象
    $dsn = "mysql:dbname=mydb;host=localhost"; //数据源
    $pdo = new PDO($dsn,"root","123");   //root为连接用户名,123为密码
    
    //写SQL语句
    $sql = "select * from nation";
    $sql1 = "insert into nation values('n077','数据')";
    
    //执行,返回的是PDOStatement对象
    $a = $pdo->query($sql); //执行查询
    $a1 = $pdo->exec($sql1); //执行其他语句
    
    var_dump($a);
    var_dump($a1);
    
    $arr = $a->fetchAll(PDO::FETCH_BOTH);  //遍历输出
    var_dump($arr);
    

      

    事务功能:

    事务:能够控制语句同时成功同时失败,失败时可以回滚:

    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //设置异常模式
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
    
    try
    {
    	//开启事务
    	$pdo ->beginTransaction(); 
    	
    	//......中间部分为数据库代码及执行
    	
    	//提交
    	$pdo->commit();
    }
    catch(Exception $e)
    {
    	//抓住try里面出现的错误,并且处理
    	//echo $e->getMessage(); //获取异常信息
    	echo "失败! ";
    	//回滚
    	$pdo->rollBack();
    }
    //final()
    //{
    	//最终执行,无论以上try代码有没有出错,都会执行
    //}
    

      

    如果cath()中有失败语句,则回到开启事务时的状态。

    防止SQL注入攻击:

    索引方法:

    //预处理语句防止SQL注入
    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //$code = "n005";
    
    //SQL语句里面需要加占位符 ?
    //$sql = "select * from nation where code=?";
    $sql = "insert into nation values(?,?)";
    
    //准备执行,返回PDOStatement对象
    $st = $pdo->prepare($sql);
    
    //调用绑定参数的方法来绑定参数
    //$st->bindParam(1,$code);
    //$st->bindParam(2,$name);
    //$name = "测试1";
    
    //索引数组
    $attr = array("n006","测试2");
    
    //执行方法
    $st->execute($attr);
    
    //$attr = $st->fetchAll();
    
    //var_dump($attr);
    

      

    关联方法:

    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //占位符是字符串
    $sql = "insert into nation values(:code,:name)";
    
    $st = $pdo->prepare($sql);
    //$st->bindParam(":code",$code,PDO::PARAM_STR);
    //$st->bindParam(":name",$name,PDO::PARAM_STR);
    //$code = "n007";
    //$name = "测试3";
    
    //关联数组
    $attr = array("code"=>"n008","name"=>"测试4");
    
    $st->execute($attr);
    

      

    利用关联方法向数据库添加数据:

    新建添加php文件:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <form action="addchuli.php" method="post">
    	<div>代号:<input type="text" name="code" /></div>
        <div>名称:<input type="text" name="name" /></div>
        <input type="submit" value="添加" />
    </form>
    </body>
    </html>
    

     

    处理界面:

    <?php
    $dsn = "mysql:dbname=mydb;host=localhost";
    $pdo = new PDO($dsn,"root","123");
    
    //占位符是字符串
    $sql = "insert into nation values(:code,:name)";
    
    $st = $pdo->prepare($sql);
    //$st->bindParam(":code",$code,PDO::PARAM_STR);
    //$st->bindParam(":name",$name,PDO::PARAM_STR);
    //$code = "n007";
    //$name = "测试3";
    
    $st->execute($_POST);
    
    
    ?>
    

      

  • 相关阅读:
    GridView编辑删除取消完整代码
    添加删除组件里没有IIS
    关于网站开发中存在的问题
    网络公司网站源码介绍Version1.0
    IIS 状态代码
    收藏常用的快捷方式
    连接池已经满的解决方案
    Do you choose a experienced employee with highsalary or a inexperienced employee with lowsalary?
    Registered Permanent residence/attitude for sports
    数据缓存依赖
  • 原文地址:https://www.cnblogs.com/cyrfr/p/6237452.html
Copyright © 2020-2023  润新知