下面是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文档中验证;页面预览效果如下
<?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; } ?>