PHP--数据库访问(增、删、改、查)

练习通过数据库查询一个表,操作这个表的增、删、改、查的功能!

一、主页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<table width:100% border="1" cellpadding="0" cellspacing="0">
<tr style="background-color:#CF0">
    <td>代号</td>
    <td>姓名</td>
    <td>性别</td>
    <td>民族</td>
    <td>生日</td>
    <td>操作</td>
</tr>
<?php
    //造链接对象
    $db = new mysqli("localhost","root","517","mydb");
    //判断是否链接成功
    !mysqli_connect_error() or die("链接失败");
    //写sql语句
    $sql = "select * from Info ";
    //执行sql语句
    $result = $db->query($sql);  //返回的$result是一个结果集
    //处理查询结果
    $attr = $result->fetch_all();    /*$result 到这步就是一个对象,可以利用对象里的方法
                                     可以用1.fetch_row(),一行一行的取,取出来的是一个索引数组
                                          2.fecth_all() 取出所有的数据,返回的是一个二维数组
                                          3.fetch_assoc() 一行一行的取 取出的是一个关联数组*/
    for($i=0;$i<count($attr);$i++)
    {
        echo"<tr>";
        $attr[$i];  //取出的数据是一个行的数组
        //因为$attr[$i]就是一个数组,所以需要在遍历这个数组查出数据
        for($j=0;$j<count($attr[$i]);$j++)
        {
            echo"<td>{$attr[$i][$j]}</td>";  //适用于列数比较多的数据循环数据    
        }
        /*造操作表里的删除和修改,要在for循坏外面写<td>,因为下面的<tr>是在外层的for循环里的,所以每一行数据都会循环出来删除和修改的a标签.
          为了清楚的知道到底操作的是哪条数据,所以可以用?手写get提交方式(这种方式叫做写一个querystring),传一个主键值来唯一标识这条数据*/
        echo"<td><a href='Delete.php?code={$attr[$i][0]}'>删除</a>&nbsp;<a href='Delete.php?code={$attr[$i][0]}'>删除</a></td>";
        echo"</tr>";        
    }
                                    
    
?>
</table>
<!--点击按钮添加数据-->
<br />
<!--添加数据跳转页面也可以用JavaScript,找到这个元素,利用window.open做, 这里用<a>标签做-->
<a href="tianjia.php"><input type="button" value="添加数据"/></a>


</body>
</html>

二、添加数据页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<form action="Add.php" method="post">
    <div>
        代号:<input type="text" name="code"/>     <!--只要提交表单,input里必须有name,因为到处理页面要接收name值-->
    </div>
    <div>
        姓名:<input type="text" name="name"/>
    </div>
    <div>
    <!--添加value值,提交的时候选中哪个,就提交哪个value的值; 注意name要设置成一样的,才会互斥-->  
        性别:<input type="radio" name="sex" value="ture" checked="checked"/>男 &nbsp;  
            <input type="radio" name="sex" value="false"/></div>
    <div>
    <!--<select>也是表单元素,所以也要设置name值-->
        民族:
        <select name="nation">     
            <?php
            //造链接对象
            $db = new MySQLi("localhost","root","517","mydb");
            //判断是否出错
            !mysqli_connect_error() or die("链接失败");
            //写sql语句
            $sql = "select * from Nation";
            
            //执行sql语句
            $result = $db->query($sql);
            //处理结果
            $attr  = $result->fetch_all();
            for($i=0;$i<count($attr);$i++)
            {
                echo"<option value='{$attr[$i][0]}'>{$attr[$i][1]}</option>";  //点击提交的时候,传过去的是value值
            }
            ?>
            
        </select>
    </div>
    <div>
        生日:<input type="text" name="birthday"/>
    </div>
<div>
    <input type="submit" value="确定"/>
    <a href="/LianXi/Untitled-4.php"><input type="button" value="返回"/></a>
</div>
</body>
</html>

三、添加处理页面

<?php
//接收上个页面传过来的name值 送到数据库
$code = $_POST["code"];  //post引号里的值 是从上个页面传过来的name值,用一个变量接收一下后在这个处理页面调用
$name = $_POST["name"];
$sex = $_POST["sex"];
$nation = $_POST["nation"];
$birthday = $_POST["birthday"];
//造链接对象
$db = new MySQLi("localhost","root","517","mydb");
//判断是否出错
!mysqli_connect_error() or die("链接失败");
//写sql语句
$sql = "insert into Info values('{$code}','{$name}',{$sex},'{$nation}','{$birthday}')"; //value值中如果是字符串则需要加单引号,其他的不用加(布尔型,整型,浮点型);$sex是布尔类型的,所以在value值里不用加单引号.

//执行sql语句
$result = $db->query($aql); //因为$result 接收的不是查询语句,所以返回的是ture或者false

if($result)
{
    header("location:tianjia.php");
}
else
{
    echo"添加失败";
}

四、删除页面

<?php
//删除处理页面
$code = $_GET["code"];

//造链接对象
    $db = new mysqli("localhost","root","517","mydb");
    //判断是否链接成功
    !mysqli_connect_error() or die("链接失败");
    //写sql语句
    $sql = "delete from Info where code='{$code}'";
    //执行sql语句
    $result = $db->query($sql);  //返回的$result是一个结果集

if($result)
{
    header("location:Untitled-4.php");
}
else
{
    echo"链接失败!";
}

五、修改页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<?php
            $code = $_GET["code"]; //用get方式接收到传过来的主键值,用主键值查出数据
    
            //造链接对象
            $db = new MySQLi("localhost","root","517","mydb");
            //判断是否出错
            !mysqli_connect_error() or die("链接失败");
            //写sql语句
            $sqlxq = "select * from Info where Code='{$code}'";
            //执行sql语句
            $resultxq = $db->query($sqlxq);
            
            $attrxq = $resultxq->fetch_row();  //因为通过主键值只查出来一条数据,所以用fetch_row()比较方便
    
?>
<form action="Update.php" method="post">
    <div>
        代号:<input type="text" name="code" readonly="readonly" value="<?php echo $attrxq[0]?>"/>     <!--只要提交表单,input里必须有name,因为到处理页面要接收name值;-->
    </div>
    <div>
        姓名:<input type="text" name="name" value="<?php echo $attrxq[1]?>"/>
    </div>
    <div>
    <!--添加value值,提交的时候选中哪个,就提交哪个value的值; 注意name要设置成一样的,才会互斥-->  
        性别:<input type="radio" name="sex" value="ture" <?php  echo $attrxq[2]?"checked='checked'":"" ;?>/>男 &nbsp;  
            <input type="radio" name="sex" value="false" <?php  echo $attrxq[2]?"":"checked='checked'" ;?>/></div>
    <div>
    <!--<select>也是表单元素,所以也要设置name值-->
        民族:
        <select name="nation">     
            <?php
            
            //写sql语句
            $sql = "select * from Nation";
            
            //执行sql语句
            $result = $db->query($sql);
            //处理结果
            $attr  = $result->fetch_all();
            for($i=0;$i<count($attr);$i++)
            {
                if($attrxq[3]==$attr[$i][0])
                {
                    echo"<option selected='selected' value='{$attr[$i][0]}'>{$attr[$i][1]}</option>";  //点击提交的时候,传过去的是value值
                }
                else
                {
                    echo"<option value='{$attr[$i][0]}'>{$attr[$i][1]}</option>"; 
                }
            }
            ?>
            
        </select>
    </div>
    <div>
        生日:<input type="text" name="birthday" value="<?php echo $attrxq[4]?>" />
    </div>
<div>
    <input type="submit" value="修改"/>
    <a href="/LianXi/Untitled-4.php"><input type="button" value="返回"/></a>
</div>
</body>
</html>

六、修改处理页面

<?php

$code = $_POST["code"];  
$name = $_POST["name"];
$sex = $_POST["sex"];
$nation = $_POST["nation"];
$birthday = $_POST["birthday"];

//造链接对象
$db = new MySQLi("localhost","root","517","mydb");
//判断是否出错
!mysqli_connect_error() or die("链接失败");
//写sql语句
$sql = "update Info set Name='{$name}',Sex={$sex},Nation='{$nation}',Birthday='{$birthday}' where Code='{$code}'"; 

//执行sql语句
$result = $db->query($aql);

if($result)
{
    header("location:Untitled-4.php");    
}
else
{
    echo"修改失败";    
}

 

注意事项!!

1.如果运行程序的时候出现错误,显示的是fetch_all()或fetch_row()有错误,表示是sql语句写错了

2.一般做程序的时候,修改页面中的主键值一般是不允许修改的,可以显示,但是最好不要设置成可以修改的,会出现问题;设置成修改的可能导致主键值重复(修改页面中的提示)

3.手写get提交方式的这种做法叫做写一个querystring,问号后面直接跟name;如果写多个,用@符号隔开

4.给文件命名的时候,一般按照驼峰命名法!就是单词首字母大写,例如:XiuGaiChuLi.php

5.做项目的时候,要考虑到界面的友好性,怎么样才能让用户用着更舒服更顺手,尽力去完善

6.完善页面:<a href="delete.php" onclick="return confirm('确定删除吗?')">删除</a> 

posted @ 2016-04-03 22:30  ~梅梅~  阅读(482)  评论(0编辑  收藏  举报