博客列表 >数据库PDO操作大全

数据库PDO操作大全

小的博客
小的博客原创
2018年01月05日 17:38:45724浏览

一:新建文本pdo_insert.php代码如下:主要是一个表单,用户可以通过填写用户名,邮箱,密码等项目来向数据库添加数据;数据的验证是在pdo_reqinster.php文档中;

<?php

//引入头部

$nameTitle='PDO表单验证登录';

require 'header.php';

 

?>

<div class="container">

  <div class="row">

    <div class="col-md-12">

   <h3 class="text-center">用户注册</h3>

   <form action="pdo_reginster.php" method="post"  class="form-horizontal">

     <div class="form-group">

    <label for="name" class="col-sm-2 control-label">用户名:</label>

    <div class="col-sm-10">

      <input type="text" class="form-control" id="name" placeholder="userName" name="name" value="<?php echo (isset($_POST['name']))?$_POST['name']:''?>">

    </div>

  </div>

  

  <div class="form-group">

    <label for="email" class="col-sm-2 control-label">邮箱:</label>

    <div class="col-sm-10">

    <input type="email" class="form-control" id="email" placeholder="Email" name="email" value="<?php echo (isset($_POST['email']))?$_POST['email']:''?>">

     </div>

  </div>

  <div class="form-group">

    <label for="password1" class="col-sm-2 control-label">密码:</label>

    <div class="col-sm-10">

    <input type="password" class="form-control" id="password1" placeholder="Password" name="password1" value="<?php echo (isset($_POST['password1']))?$_POST['password1']:''?>">

     </div>

  </div>

  <div class="form-group">

    <label for="password2" class="col-sm-2 control-label">密码确认:</label>

    <div class="col-sm-10">

        <input type="password" class="form-control" id="password2" name="password2" placeholder="Confirm Password" value="<?echo (isset($_POST['password2']))?$_POST['password2']:''?>">

    </div>  

  </div>

  <div class="form-group">

    <div class="col-sm-offset-2 col-sm-10 text-center">

       <button type="submit" class="btn btn-primary btn-block">注册</button>

    </div>

  </div>

   </form>

 </div>

  </div>

</div>

二:PDO 的新增操作即写操作涉及方法 exec();以下是pdo_reginster.php文档中的代码:主要是对pdo_insert.php表单提交过来的数据进行验证;验证通过之后再将数据写入数据库的操作:主要考察的就是Pdo的写操作:

<?php
  //导入头部$nameTitle='登录验证';
  require 'header.php';
   //验证pdo_insert.php提交过来的用户信息,通过则写入数据库
if($_SERVER['REQUEST_METHOD']=='POST'){
echo <<<'IN'   <script> if(confirm("确认提交吗")){
   }else{ 
    location.href="pdo_insert.php";
     }</script>
IN; 
//用户名验证 
if(empty($_POST['name'])){ 
 echo '<script>alert("没有输入用户名");location.href="pdo_insert.php"</script>'; 
  exit();
   }else{  $name=$_POST['name'];   
   } 
 //邮箱验证 
 if(empty($_POST['email'])){  
 echo '<script>alert("没有输入邮箱");location.href="pdo_insert.php"</script>';  
 exit(); 
 }else{ 
  $email=$_POST['email']; 
  } 
  //密码验证,要进行密码确认校验 
  if(empty($_POST['password1'])){ 
   echo '<script>alert("没有输入密码");location.href="pdo_insert.php"</script>'; 
    exit(); }elseif(empty($_POST['password2'])){ 
     echo '<script>alert("没有输入确认密码");location.href="pdo_insert.php"</script>'; 
      exit(); 
      }elseif($_POST['password1']!==$_POST['password2']){  
        echo '<script>alert("两次输入密码不相等");location.href="pdo_insert.php"</script>';  exit(); 
     }else{ 
      $password=$_POST['password1'];
     }
  //连接数据库;生成PDO对象
   require 'pdo_connect.php';
    //生成sql语句
  $sql="INSERT `user1` SET `name`='{$name}',`email`='{$email}',`password`=sha1('{$password}')"; 
  //执行新增操作
   $num=$pdo->exec($sql); 
   if($num==1){
     echo '成功新增了'.$num.'条数据,新增主键id 是'.$pdo->lastInsertId(); 
  }else{  
  print_r($pdo_errorInfo()); }}
  //创建登录界面
 echo <<<'INPUT' 
      <div class="container">   
      <div class="row">     
      <div class="col-md-12">       
        <h3 class="text-center">用户登录</h3>            
         <form class="form-horizontal" action="pdo_view.php" method="post">                         <div class="form-group">                    
              <label for="name" class="col-sm-2 control-label">用户名</label>                           <div class="col-sm-10">                        
              <input type="text" class="form-control" id="name" placeholder="请输入用户名" name="name" >                   
            </div>                
          </div>                               
         <div class="form-group">                    
          <label for="password1" class="col-sm-2 control-label">密码</label>                         <div class="col-sm-10">                        
            <input type="password" class="form-control" id="password1" placeholder="请输入密码" name="password1">                    
           </div>                
          </div>    
           <div class="form-group">                   
            <div class="col-sm-offset-2 col-sm-10  text-center">                       
             <button type="submit" class="btn btn-primary  btn-block">登录</button>                    </div>                
           </div>  
         </div>  
       </div>
     </div>
INPUT;
?>

三:以下是pdo_view.php;主要考察PDO的查询操作,其中查询操作我使用的是PDO的预处理对象来做的;将查询的数据表中的信息遍历在表格中:在表格中我分别添加了'修改'和'删除'的超链接;以用户id 的方式来修改或者删除指定用户信息;

<?php
  //导入头部$name='用户信息列表';
    require 'header.php';
  //这个文档主要任务是利用PDO对象的方法来遍历数据表中的数据,也就是考察查询操作
   //1,连接数据库服务器;生成PDO对象
     require 'pdo_connect.php';
   //2,准备查询的SQL语句
   try{ 
   $sql="SELECT * FROM `user1` WHERE `id`> :id"; 
  //3. 执行prepare()方法创建PDOStatement对象成功返回true失败返回false
  $pdo_stmt=$pdo->prepare($sql);if(true==$pdo_stmt){  //4. 执行查询操作: execute();  
  //以关联数组方式给SQL语句中的命名占位符绑定数据 
   $res=$pdo_stmt->execute(['id'=>2]);  
   
   if(true==$res){//如果查询成功并返回了结果集   
   
   if($pdo_stmt->rowCount()>0){//只有当结果集中存在记录的时候才进行查询    
   
   echo '<h2 align="center">用户信息列表</h2>';      
   
    echo '<table border="1" cellpading="0" cellspacing="0" style="width:800px;text-align:center;margin:0 auto;">';    
    echo '<tr bgcolor="antiquewhite" style="line-height:45px;"><td>Id</td><td>Name</td><td>Email</td><td>操作</td></tr>';    
    while($rows=$pdo_stmt->fetch(PDO::FETCH_ASSOC)){     
     echo '<tr>';   
     echo '<td>'.$rows['id'].'</td>';  
     echo '<td>'.$rows['name'].'</td>';   
     echo '<td>'.$rows['email'].'</td>';   
     echo '<td><a class="btn btn-primary" href="pdo_update.php?id='.$rows['id'].'" role="button">修改</a><a class="btn btn-danger" href="pdo_delete.php?id='.$rows['id'].'">删除</a></td>';   
     echo '</tr>';   
   }   echo '</table>';   
 }else{   
  echo '<h2 style="color:red">数据表中没有数据</h2>';   
 }    
 }
 }else{ print_r($pdo->errorInfo());
}
}catch(PDOException $e){ 
echo $e->getMessage();
}
?>

三:以下是pdo_update.php文档中的代码:在pdo_view.php页面当点击修改按钮是跳转的就是这个页面:这个页面可以对用户的用户名,邮箱进行修改,然后提交验证是在本页面操作的;代码如下:

 更新操作也是基于查询的主要有以下步骤:

  1,填写要修改的用户名,邮箱点击提交按钮;

  2,本页面通过POST方式获取提交的用户名,邮箱的值;通过get方式获取到用户的id;

  3,进行数据验证;验证通过的话;

  4,验证合格的话则开始进行用户信息更新工作;

更新的步骤如下:

  1,生成一个预处理查询sql;

  2,生成预处理查询对象;prepare();

  3,执行查询操作: execute();以关联数组方式给SQL语句中的命名占位符绑定数据

 4,获取到查询的数据解析到一维数组中;

 5,生成更新语句注意更新条件的id与查询数据的id相等;

 6,执行更新操作:exec();

<?php
$nameTitle='用户信息修改';
require 'header.php';//导入头部
 if($_SERVER['REQUEST_METHOD']=='POST'){
//连接数据库,生成pdo对象
 require 'pdo_connect.php';
 //更新是基于查询的;准备好要查询 的语句
 $id=isset($_GET['id'])?$_GET['id']:null;
 $email=isset($_POST['email'])?$_POST['email']:null;
 $name=isset($_POST['name'])?$_POST['name']:null;
 echo $name;echo $email;
 if(empty($name)){
  echo'用户名为空';
  exit;
 }else{
  if(empty($email)){
  echo'邮箱名为空';
  exit;
  }
 }
 
 //准备PDO预处理的SQL语句;
 $sql="SELECT * FROM `user1` WHERE `id`=:id";
 //3. 执行prepare()方法创建PDOStatement对象成功返回true失败返回false 
 $pdo_stmt=$pdo->prepare($sql);
 if(true==$pdo_stmt){
   //4. 执行查询操作: execute();
  //以关联数组方式给SQL语句中的命名占位符绑定数据
  $res=$pdo_stmt->execute(['id'=>$id]);
  if(true==$res){
   if($pdo_stmt->rowCount()>0){
     $row=$pdo_stmt->fetch(PDO::FETCH_ASSOC);
     $sql2="UPDATE `user1` SET `name`='{$name}',`email`='{$email}' WHERE `id`={$row['id']}";
       //执行更新
   try{
     $num=$pdo->exec($sql2);
   if($num==1){
    echo '<h2 style="color:green">成功更新了'.$num.'条数据</h2><script>location.href="pdo_view.php"</script>';
   }else{
    echo '<h2 style="color:red">数据已经更新<script>location.href="pdo_view.php"</script></h2>';
   }
   }catch(PDOException $e){
    echo $e->getMessage();
   }
   }else{
    echo '<h2>已经被更新</h2>';
   }
  }
 }else{
   echo '<h2 style="color:red">数据表中没该条有数据</h2>';
 }
 }
?>
<div class="container">
   <div class="row">
     <div class="col-md-12">
       <h3 class="text-center">用户信息修改</h3>
            <form class="form-horizontal" action="" method="post">
                <div class="form-group">
                    <label for="name" class="col-sm-2 control-label">用户名</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="name" placeholder="请输入用户名" name="name" >
                    </div>
                </div>
                 <div class="form-group">
                    <label for="email" class="col-sm-2 control-label">邮箱</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="email" placeholder="请输入用户名" name="email" >
                    </div>
                </div>
    <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10  text-center">
                        <button type="submit" class="btn btn-primary  btn-block">提交</button>
                    </div>
                </div>
  </div>
   </div>
 </div>

四:以下是在pdo_view.php页面点击删除按钮是页面跳转的地址;pdo_delete.php的文档;

    主要考察的是PDO对象的删除操作;删除操作主要有以下步骤;*(在这个文档中我的查询操作使用的是

 PDO预处理操作);

   1,get方式获取指定的用户id;

  2,连接数据库:pdo_connect.php是已经封装好的pdo数据库连接操作;

  3,生成查询语句(删除是基于查询的);

 4,执行查询功能:查询成功才能继续删除工作否则用该提示用户没有改条信息

 5,将查询到的数据赋值到一维数组中;

6,生成删除语句;

 7,执行删除功能:成功则提示成功exec()返回值为1 时,否则该语句已经被删除

<?php
//1,连接数据库生成pdo对象$pdo
  $id=isset($_GET['id'])?$_GET['id']:null;
   echo<<<'IN'
   <script> 
   if(confirm("确认删除吗")){ 
    }else{ 
     location.href="viewi.php"; 
  }</script>IN;
  require 'pdo_connect.php';
 /*1,删除是基于查询;第一步是要查询需要删除的语句*/
 //贮备好查询语句
 //1,贮备好预处理语句;
 try{  
 $sql="SELECT `id`,`name`,`password`,`email` FROM `user1` WHERE `id`=:id";
 //生成预处理对象 $PDOstament=$pdo->prepare($sql);
  if(true==$PDOstament){  
   $res=$PDOstament->execute(['id'=>$id]);  
   if(true==$res){  
    if($PDOstament->rowCount()==1){   
    $row=$PDOstament->fetch(PDO::FETCH_ASSOC);   
     $num= $pdo->exec("DELETE  from user1 WHERE id=".$row['id']); i
   f($num==1){  echo '<h2 style="color:green">删除成功</h2>';   
   }else{    
  echo '<h2 style="color:red">删除失败</h2>';    
  }     
 }else{   
  echo '没有该条数据或者已经被删除';    
 }     
}else{  
 echo '没有该条数据或者已经被删除';      
 }  
 }else{ 
  print_r($pdo->errorInfo()); 
  } 
  }catch(PDOException $e){ 
   $e->getMessage(); 
   }
?>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议