zoukankan      html  css  js  c++  java
  • 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 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> 

  • 相关阅读:
    Java运行时数据区域
    线程的实现原理
    redis分布式锁的实现
    Incorrect string value: 'xF0x9Fx92x8BTi...'错误
    linux命令之less命令
    Hive数据类型和DDL操作
    Hive安装、配置和使用
    CentOS 7安装配置MySQL 5.7
    Spring+SpringMVC+MyBatis整合
    MyBatis的事物管理和缓存
  • 原文地址:https://www.cnblogs.com/supermeimei/p/5351030.html
Copyright © 2011-2022 走看看