Blogger Information
Blog 35
fans 0
comment 0
visits 27411
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysqli面向对象实例
小的博客
Original
905 people have browsed it

下面是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;
}
?>

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post