博客列表 >mysqli面向对象实例

mysqli面向对象实例

小的博客
小的博客原创
2018年01月03日 20:07:21898浏览

下面是mysql.php文档中的代码;只要是利用mysqli面向对象实现数据库的练级;在以下的操作中会直接导入,mysql.php实现数据库的连接;

$mysqli=new mysqli('localhost','root','root');
if($mysqli->connect_errno){//检测是否有连接错误码
 echo '数据库连接失败'.$mysqli->connect_error();//返回文本描述的连接错误代码
 exit();
}
$mysqli->select_db('demo');//设置默认选择的数据库
$mysqli->set_charset('utf8');//设置客户端默认字符集

下面是header.php,内容;已经引入了bootstrap 文件和jquery文件;主要是页面头部;可以在用户注册信息各个页面直接导入header.php

<?php
   header('Content-Type:text/html;charset=utf-8');//设置html文档的编码集
 ?>
 <html>
    <meta charset="UTF-8">
     <head><title><?php echo isset($nameTitle)?$nameTitle:'登录页面'?></title>
        <link rel="stylesheet" href="dist/css/bootstrap.css"><!--引入bootstrap文件-->
       <script src=" https://code.jquery.com/jquery-3.2.1.min.js"><!--引入bootstrap文件-->
        </script><script src="dist/js/bootstrap.js"></script>
        <style> 
          *{  margin:0;  padding:0; } 
          .boxtop{  
           height:40px; 
           line-height:40px; 
            background-color:#222; 
             color:white; } 
              a{
               color:white;
               text-decoration:none;
                }
 </style>
 </head>
 <body> 
     <div class="container-fluid  "> 
       <div class="row boxtop"> 
         <div class="col-md-6 ">  
           <div class="row">    
            <ul style="list-style:none">  
             <li class="col-md-2"><img src="02.png" width="100" height="40"></li>    
             <li class="col-md-2"><a href="">首页</a></li>   
             <li class="col-md-2"><a href="">用户信息</a></li>   
             <li class="col-md-2"><a href="">类库下载</a></li>    
             <li class="col-md-2"><a href="">社区问答</a></li>  
             <li class="col-md-2"><a href="">技术文章</a></li>     
             
            </ul>  
            </div>   
          </div>   
        <div class="col-md-6">  
         <div class="row">  
         <ul style="list-style:none">   
          <li class="col-md-2">手册下载<a href></a></li>   
          <li class="col-md-2">类库下载<a href></a></li>   
          <li class="col-md-2 col-md-push-6"><a href="registeri.php">登录|</a><a href="logini.php">注册</a></li> 
          </ul> </div> </div>  </div>   </div> </body></html>

一:用户注册表单logini.php中的代码如下;建立一个表单,action='registeri.php method='post',表单中的数据在  reginsteri.php文档中验证;页面预览效果如下QQ截图20180103160936.png

<?php
 $nameTitle='mysqli对象操作';
  require 'header.php';//导入头部 
?>
   <div class="container"> 
    <div class="row">   
     <div class="col-md-12"> 
       <h3 class="text-center">用户注册</h3>  
        <form action="registeri.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>

二:下面是reqisteri.php文档;检测注册表单(logini.php)提交过来的信息:使用的是msqli面向对象的操作;

  涉及的属性和方法有:

      属性:$mysqli->affected_rows,$mysqli->insert_id,$mysqli->error;
      方法:$mysqli->query();

      <?php
/*检测注册表单提交过来的信息
  对错误进行处理,
   将用户信息插入到用户表中;
*/
$nameTitle='登录验证';
require 'header.php';
 if($_SERVER['REQUEST_METHOD']=='POST'){
  //创建一个数组来保存错误信息;
  if(empty($_POST['name'])){
   echo '<script>alert("没有填写用户名");location.href="logini.php"</script>';
  }else{
   $name=isset($_POST['name'])?$_POST['name']:null;//用户名验证
  }
  if(empty($_POST['email'])){
   echo '<script>alert("没有填写邮箱");location.href="logini.php"</script>';
  }else{
    $email=isset($_POST['email'])?$_POST['email']:null;//邮箱验证
  }
  //密码验证要进行校验
  
  if(empty($_POST['password1'])){
   echo '<script>alert("没有输入密码");location.href="logini.php"</script>';
  }elseif(empty($_POST['password2'])){
    echo '<script>alert("没有确认密码");location.href="logini.php"</script>';
  }elseif($_POST['password1']==$_POST['password2']){
   $password=trim($_POST['password1']);
  }else{
    echo '<script>alert("密码与密码确认不相等");location.href="logini.php"</script>';
  }
   
  }
  
  //连接数据库服务器
    require 'mysql.php';
 $sql="INSERT `user1` SET `name`='{$name}',`email`='{$email}',`password`=sha1('{$password}')";
 $res=$mysqli->query($sql);//执行sql 语句
 if(true==$res){//新增数据成功打印出新增条数 ,新增主键id 页面跳转到viewi.php
  echo '新增了'.$mysqli->affected_rows.'条数据,新增主键id'.$mysqli->insert_id.'<script>location.href="viewi.php"</script>';
 }else{
  echo '新增失败'.$mysqli->error;
 }
 }
?>

三:以下文档是viewi.php中的代码;主要考察的是mysqli对象的查询操作;查询操作时mysqli中的重点:

 1,主要涉及两个对象;

    (1),$mysqli对象,也叫做数据库连接对象,简称:连接对象。

    (2),$mysqli_result:数据库查询结果集对象,简称结果集对象。

2,   查询成功返回结果集对象,失败返回false

3,重点掌握二个结果集对象方法:

  (1)$mysqli_result->num_rows;结果集中的记录行数。

  (2)$mysqli_result->fetch_array;获取当前结果集记录并解析到一维数组中;

 **在这个文档中我们将查询的数据表中的数据解析为数组之后;通过while循环遍历

在table 表中;并且每行新增了'修改'和'删除'按钮;我们将在下一步的操作中来实现修改和删除的功能。

<?php
 $nameTitle='用户信息表';

 require 'header.php';//导入头部
 //连接数据库
 /*查询操作[重点]
 * 1. 涉及二个对象:
 *    (1)$mysqli对象,也叫数据库的连接对象,简称:连接对象;
 *    (2)$mysqli_result:数据库的查询结果集对象,简称:结果集对象
 * 2. 查询成功返回结果集对象,失败返回false
 * 3. 重点掌握二个结果集对象方法:
 *    (1)$mysqli_result->num_rows():结果集中的记录行数
 *    (2)$mysqli_result->fetch_array():获取当前结果集记录并解析到一维数组中
 */
 //连接数据库
 require 'mysql.php';
 $sql = "SELECT * FROM `user1`";
 $mysqli_result=$mysqli->query($sql);//执行查询
 if($mysqli_result){
  $num = $mysqli_result->num_rows;
  if($num>0){
     echo '<h3 align="center"style="line-height:80px;">用户信息列表</h3>';
   echo '<table border="1" cellpadding="0" cellspacing="0" align="center" style="margin:0 auto;text-align:center" width="800">';
    echo '<tr bgcolor="lightblue" style="line-height:45px">';
    echo '<td>ID</td>';
    echo '<td>Name</td>';
    echo '<td>Email</td>';
    echo '<td>PASSword</td>';
    echo '<td>操作</td>';
    echo '</tr>';
    while( $rows=$mysqli_result->fetch_array(MYSQLI_ASSOC)){
     echo '<tr>';
     echo '<td>'.$rows["id"].'</td>';
     echo '<td>'.$rows['name'].'</td>';
     echo '<td>'.$rows['email'].'</td>';
     echo '<td>'.$rows['password'].'</td>';
     echo "<td>
        <a class='btn btn-primary' href=editi.php?id=".$rows['id'].">修改</a>
        <a class='btn btn-danger' href=deletei.php?id=".$rows['id'].">删除</a>
     </td>";
     echo '</tr>';
    }
   echo '</table>';
  }else{
   echo '数据表为空,先添加数据';
  }
 }
 $mysqli->close();
?>

五:以下是editi.php文档中的代码;在viewi.php的文档运行时点击修改按钮跳转的页面:这个页面主要是用户信息修改页面,将用户名设置为只读模式,可以对用户的email进行修改;将from表单的提交地址设置为do_editi.php;

<?php

$nameTitle='修改页面';//标题命名
//导入头部
require 'header.php';
//连接数据库;
require 'mysql.php';

$id=isset($_GET['id'])?$_GET['id']:null;

$sql="SELECT * FROM `user1` WHERE `id`=".$id;

$mysqli_result=$mysqli->query($sql);

if($mysqli_result){

 if($mysqli_result->num_rows==1){

  $rows = $mysqli_result->fetch_array(MYSQLI_ASSOC);

 }

}else{

 echo '数据查询失败'.$mysqli->error;

}

?>

 <div class="container">

   <div class="row">

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

       <h3 class="text-center">用户信息修改</h3>

            <form class="form-horizontal" action="do_editi.php?id=<?php echo $rows['id']?>" 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" readonly>

                    </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="请输入邮箱地址" name="email" value="<?php echo (isset($_POST['email']))?$_POST['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>

六:以下是do_editi.php文档中的内容:主要是对editi.php 表单中提交过来的数据进行验证,对数据库中的指定表单中的值

进行修改;在这里我在执行sql语句之前设置了一个弹窗confirm 如果点击确认才会执行修改操作,点击取消会跳转到viewi.php页面;

<?php
header('Content-Type:text/html;charset=utf-8');
 if($_SERVER['REQUEST_METHOD']){
  $email=isset($_POST['email'])?$_POST['email']:null;
  if(empty($email)){
   echo '请填写邮箱';
  }else{
   $id=isset($_GET['id'])?$_GET['id']:null;
  }
   require 'mysql.php';
echo <<<'INPUT'
 <script>
  if(confirm("确认修改吗")){
   
  }else{
   location.href="viewi.php";
  }
 </script>
INPUT;
  $sql= "UPDATE `user1` SET `email`='{$email}' WHERE `id`='{$id}'";//sql语句
  $res=$mysqli->query($sql);//执行sql语句;
  if($res){
   if($mysqli->affected_rows==1){//修改成功显示修改了几条数据,并且跳转到viewi.php页面
     echo '成功修改了'.$mysqli->affected_rows.'条数据<script>location.href="viewi.php"</script>';
   }else{
    echo '数据已被修改';
   }
  
  }else{
   echo '修改数据失败'.$mysqli->error;
  }
 }
?>

七:下面的文档是deletei.php,是在用户信息页面(viewi.php),点击删除跳转的页面,本文档执行的操作时,对数据库中数据表中的数据进行删除。

    删除操作:
     1,删除与更新有二点是相同的;
        (1):都是些的操作:
        (2):都是基于查询的:

在这里我在执行sql语句之前设置了一个弹窗confirm 如果点击确认才会执行删除操作,点击取消会跳转到viewi.php页面;

<?php
 header('Content-Type:text/html;charset=utf-8');
require 'header.php';//导入头部
require 'mysql.php';//连接数据库
$id=isset($_GET['id'])?$_GET['id']:null;//获取用户Id;
//设置弹窗;
echo<<<'IN'
<script>
 if(confirm("确认删除吗")){
  
 }else{
  location.href="viewi.php";
 }
</script>
IN;
//查询sql语句;
$sql="SELECT * FROM `user1` WHERE `id`=".$id;
$mysqli_result= $mysqli->query($sql);//返回结果集
if(isset($mysqli_result)){//结果集存在则查询成功;
 $num = $mysqli_result-> num_rows;//获取查询的行数;
 if($num==1){//如果查询了为一条数据,则执行删除操作;
  $rows= $mysqli_result->fetch_array(MYSQLI_ASSOC);//将查询的数据遍历到一维数组中;
  $sql1="DELETE FROM `user1` WHERE `id`='{$rows['id']}'";
  $res=$mysqli->query($sql1);//执行删除操作;
  if(true==$res){
   //if($mysqli->affected==1){
    echo '删除成功<script>location.href="viewi.php"</script>';
   //}else{
    //echo '当前记录已经被删除<script>location.href="viewi.php"</script>';
   //}
   
  }else{
   echo '删除失败'.$mysqli->error;
  }
 }else{
  echo '当前记录已经删除';
 }
}else{
 echo '查询失败'.$mysqli->error;
}
?>

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