PHP 操作数据库 PDO

PHP 操作数据库 PDO

  • pdo 链接 mysql
//PDO连接Mysql数据库
$dbms = 'mysql';
$dbname = 'demo1';
$host = 'localhost';
$user = 'root';
$pwd = 'root';
$dsn = "$dbms:host=$host;dbname=$dbname";


try {
    $pdo = new PDO($dsn, $user, $pwd);
    $pdo->exec("set names 'utf8'");
     //设置异常模式
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo 'PDO连接Mysql成功!' . '<br>';
    //var_dump($pdo);

 /**
	事务
*/
 //事务
    try{
         //开启事务
    $pdo ->beginTransaction(); 

    $pdo->exec("insert into admin set name='ceshi56',pwd='".md5(123456)."',sex='1',age='20' ");
    
     //提交
     $pdo->commit();
     
    }catch(Exception $e){

	   //抓住try里面出现的错误,并且处理
	    //echo $e->getMessage(); //获取异常信息
	    
   		 //回滚
    	$pdo->rollBack();
  	}
    
    }catch (Exception $e) {
    	echo $e->getMessage() . "<br>";
	}
  • 查询mysql 数据 fetchAll , prepare , query
  1. fetchAll
$stmt = $pdo->query("select name,age,sex from admin ");
    //$row_count = $stmt->rowCount(); // 返回条数 为空返回 0 
    //print_r($row_count);  
    $rows = $stmt->fetchAll(); //获取所有 
        for($i=0;$i<count($rows);$i++){
            if($rows[$i]["sex"]=='0')
            {
            $sex = "女";
        }else{

            $sex = "男";
        };
            echo "姓名:".$rows[$i]["name"]."年龄:".$rows[$i]["age"]."性别:".$sex."<br>";
        }
  1. prepare

使用Prepare和Execute方法
使用prepare和execute方法通常被认为是处理数据库查询的比较好的方法。首先,以SQL语句为参数调用PDO->prepare 方法,我们会得到一个返回的PDOStatment对象,并在这个对象上调用execute方法,然后 ,通过一个while循环重复调用PDOStatement->fetch方法来获取从数据库中查询的数据。

      $stmt = $pdo->prepare("select name,age,sex from admin ");
        if($stmt->execute()){
            while($row = $stmt->fetch()){

        if($row["sex"]=='0'){
                $sex = "女";
            }else{
    
                $sex = "男";
            };

                //echo "姓名:".$row["name"];
            echo "姓名:".$row["name"]."年龄:".$row["age"]."性别:".$sex."<br>";

            }
        }
  上面这段代码就可以防范sql注入。为什么呢?
当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调 用到 execute()时,用户提交过来的值才会传送给数据库,它们是分开传送的,两者独立的,SQL攻击者没有一点机会。

转自:https://blog.youkuaiyun.com/qq_16752369/article/details/77119622

  1. query

使用Query方法
首先看一下最快的、但却不是最好的方法—–query方法。


$stmt = $pdo->query("select name,age,sex from admin ");
while($row = $stmt->fetch()){
    if($row["sex"]=='0'){
        $sex = "女";
    }else{

        $sex = "男";
    };

        //echo "姓名:".$row["name"];
    echo "姓名:".$row["name"]."年龄:".$row["age"]."性别:".$sex."<br>";

    }    
  • PDO 插入一条数据,修改,删除

 //插入一条数据 
     if($pdo->exec("insert into admin set name='ceshi456',pwd='".md5(123456)."',sex='1',age='20' ")){
         echo "插入成功";
         echo $pdo->lastInsertId();

     }

    //修改数据
     if($pdo->exec("update admin set name='ceshi123' where id='2' ")){
                echo "修改成功";
                echo "<br>";
     }
     
    //删除一条数据
        if($pdo->exec("delete from admin where id='3' ")){
                echo "删除成功";
                echo "<br>";
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值