下面是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;
}
?>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号