• PHP数据访问增删查(20161028)


    注:预定义数组   $_POST[ ];

    <!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="1028afternoonchuli.php" method="post">
    <!--form 的 method 属性在 1028form表单的method属性 -->
    <div>用户名:<input type="text" name="uid" /></div><!--name是在提交的时候用-->
    <div>密码:<input type="password" name="pwd" /></div>
    <!--type="password"专门的密码框-->
    <div><input type="submit" value="登录" /></div>
    <!--type="submit"提交按钮-->
    
    </form>
    
    
    
    </body>
    </html>
    1028afternoontest.php
    <?php
    //防止出现乱码,添加如下的header声明,并在浏览器的 更多工具 —— 编码 —— 中改成 Unicode-(UTF8)
    header("Content-type: text/html; charset=utf-8");
    
    
    //取出登录页面提交的用户名和密码的值,从预定义数组$_POST[];来取。$_POST数组来取POST方式传递过来的数据
    $uid = $_POST["uid"];
    $pwd = $_POST["pwd"]; 
    
    //验证密码和用户名是否匹配
    //造连接对象
    $db = new MySQLi("localhost","root","数据库密码","1016");
    //写sql语句  注意单词的拼写和漏写
    $sql = "select password from login where username='{$uid}' ";
    
    /*
    这种sql语句不安全
    $sql = "select count(*) from login where username='{$uid}' and password='{$pwd}' ";
    会被下面语句破解 a' or '1'='1     即sql注入攻击
    通过添加两个字符串把原来的语句变了,执行后把所有的用户数据全查到了,count(*)肯定大于0,
    防范攻击:针对PHP来说
    1、优化PHP语句2、处理用户输入的内容(是否出现特殊符号,有的话就用截取去掉或者用PDO分两次发送给服务器。第一次(prepare)发送给MySQL数据库写好的框架但是不发送框架,MySQL数据库接收到语句之后等待执行,第二次提(直接执行)交变量[就是要查的内容]。之后进行原样匹配)
    
    
    */
    
    //执行sql语句
    $result = $db->query($sql);
    $n = $result->fetch_row();//fetch_row 取第一个
    
    if( $uid!="" && $pwd!="")//!=""非空验证
    {
        if($n[0]>0)//$n[是数组,所以不能直接判断,要取里面的元素判断
        {
                header:("location:1028afternoonmain.php");//跳转页面方法
        }
        else
        {
            echo "用户名或密码错误!";    
        }
    }
    else
    {
        echo "用户名密码不能为空!";    
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    ?>
    1028afternoonchuli.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>
    <br />
    <form action="1028afternoonmain.php" method="post">
    <div>姓名:
    <input type="text" name="xm" />
    <input type="submit" value="查询" />
    </div>
    </form>
    <br />
    <form action="1101morningpiliangshanchu.php" method="post">
    <table width="100%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td><input type="checkbox" onclick="quanxuan(this)" />代号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>民族</td>
            <td>生日</td>
            <td>操作</td>
            
        </tr>
    
    
    
    <?php
    //查询规律:在用户不输入的情况下,查询的是全部数据
    //先判断有没有提交值
    
    /*简化前
    $xm="";
    if(!empty($_POST["xm"]))//empty();判断是否为空.加一个条件判断,防止报错
    {
        $xm = $_POST["xm"];    
    }
    
    //简化前
    $tj = "";
    if($xm == "")//如果没有值,查所有的,不加条件,或者给一个恒成立的条件。如果有值,按条件查找
    {
        $tj = " 1=1 ";//不要忘记两边加空格(方便拼接sql语句)    
    }
    else
    {
        $tj = " name like '%{$xm}%' ";//不要忘记两边加空格,模糊查询用like    
    }
    //简化后
    $tj = " 1=1 ";//默认恒成立
    if($xm != "")
    {
        $tj = " name like '%{$xm}%' ";    
    }
    */
    //简化后 写法一:
    $xxm = "";
    $tj = " 1=1 ";
    if(!empty($_POST["xm"]) && $_POST["xm"] !="")//判断xm是否为空
    {
        $xxm = $_POST["xm"];
        $tj = " name like '%{$_POST['xm']}%' ";    //变量里面可以加单引号
    }
    /*简化后 写法二:
    $tj = " 1=1 ";
    if(!empty($_POST["xm"]))//判断xm是否为空
    {
        if($_POST["xm"] !="")//判断xm是否为空字符串
        {
            $tj = " name like '%{$xm}%' ";    
        }
    }*/
    
    //造连接对象
    $db = new MySQLi("localhost","root","数据库密码","1016");
    //写sql语句
    $sql = "select * from info where ".$tj;//(拼接sql语句,where后面的空格是为了防止拼接语句错误.单独拿出来是因为如果写成一句的话,用户如果什么都不输入,查询的值则为空,这与查询规律冲突即用户什么都不输入的情况下,查询全部数据)
    //执行sql语句
    $result = $db->query($sql);
    //读数据,返回一个二维数组
    $attr = $result->fetch_all();
    //foreach遍历数组,
    foreach($attr as $v)//$attr as $v取attr里面的每一个小数组
    {
        echo"<tr>";    
        
        $sex = $v[2]?"男":"女";//数组v $v 取索引二,用三元运算符判断,前面是一个布尔型数据,true显示男,false显示女 0 false,1 true
        
        //根据民族代号查询民族名称    也可以使用join查询,但是一般不推荐使用,因为查询的数据量太大了
        
        /*$sname = "select name from nation where code = '{$v[3]}'";
        $rname = $db->query($sname);
        $aname = $rname->fetch_row();*/
        
        $name = nationname($v[3]);
        //使关键字高亮 <mark></mark>
        /*简化后的在上面
        $xxm = "";//先把xxm变量定义在外层
        if(!empty($_POST["xm"]))//然后判断是否有提交值
        {
            $xxm = $_POST["xm"];//有传值的话就取xm
        }
        */
        //替换关键字
        $newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//查找替换,第一个参数:关键字,根据什么去找;第二个关键字,替换后的内容;第三个参数:要替换哪个字符串,即要替换的区域
        //复选的话用数组提交 sc[] ,到处理页面,遍历数组就可以了
        echo"<td><input type='checkbox' value='{$v[0]}' name='sc[]' class='qx' />{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='1028afternoonshanchu.php?c={$v[0]}'>删除</a> <a href='1030morningxiugai.php?c={$v[0]}'>修改</a></td>";
        
        //跳转到另外一个页面并且带一个值过去的方式是get方式,因此我们要模拟一个get传值方式    ?c={$v[0]}
        
        //要想加入删除的功能要先让它可以点击,一种方法是按钮,另一种方法是<a>标签。样式可以随便做,比如在外面加上一个漂亮的DIV,在里面加上<a>标签。
        
        /*输出的两种方法
        foreach($v as $v1)
        {
            echo "<td>{$v1}</td>";
        }*/
        
        echo"</tr>";
    }
        
        //给一个民族代号,返回民族名称
        function NationName($code)
        {
            //造连接对象
            $db = new  MySQLi("localhost","root","数据库密码","1016");
            //写SQL语句
            $sql = "select name from nation where code='{$code}'";
            //执行SQL语句
            $result = $db->query($sql);
            
            $attr = $result->fetch_row();
            
            return $attr[0];
        }
    
    
    
    
    ?>
    
    </table>
    <a href="1028afternoonadd.php"><input type="button" value="添加数据" /></a>
    <input type="submit" value="批量删除" onclick="return confirm('确定删除吗?')" />
    </form>
    <!--批量删除思路:把复选框和批量删除按钮看作是一个表单-->
    
    <script>
    
    function quanxuan(a)
    
    {
        //找到下面所有的复选框
        var ck = document.getElementsByClassName("qx");    
        //不是document点出来的就没有提示,如果怕出错可以在这里随便定义一个变量然后点出来然后复制过来
        //遍历所有复选框,设置选中状态
        for(var i=0;i<ck.length;i++)
        {
            if(a.checked)
            {
                /*setAttribute("checked","checked")    
                设置属性(“名字”;“值”)*/
                ck[i].setAttribute("checked","checked");
            }
            else
            {
                /*removeAttribute("checked","checked")    
                移除属性(“名字”;“值”)*/
                ck[i].removeAttribute("checked","");
            }
        }
    
    
    
    
    
    
    
    
    
    
    }
    
    
    </script>
    
    
    
    
    
    
    
    
    
    
    
    
    </body>
    </html>
    1028afternoonmain.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>
    <form action="1028afternoonaddchuli.php" method="post">
        <!--用post提交方式时name=""是提交的值
        为了对用户友好,即用户输入方便,将性别和民族从文本框改成下拉菜单,方便选择-->
        <div>代号:<input type="text" name="code" /></div>
        <div>姓名:<input type="text" name="name" /></div>
        <div>性别:
        <input type="radio" name="sex" value="1" checked="checked" />&nbsp;
        <input type="radio" name="sex" value="0" /></div>
        <div>民族:
        <select name="nation">
            <?php
            //造连接对象
            $db = new MySQLi("localhost","root","数据库密码","1016");
            $sql = "select * from nation";
            $result = $db->query($sql);
            $attr = $result->fetch_all();
            
            foreach($attr as $v)
            {
                echo "<option value='{$v[0]}'>{$v[1]}</option>";    //<option>中间是显示用的,value值才是提交的数据
            }
            ?>
        
        </select>
        <!--下拉列表<select><option></option></select>-->
        </div>
        <div>生日:<input type="text" name="birthday" /></div>
        <div><input type="submit" value="添加" /></div>
        <!--提交按钮submit的value是显示的内容-->
    
    
    
    
    
    
    </form>
    
    
    
    
    </body>
    </html>
    1028afternoonadd.php
    <?php
    $code = $_POST["code"];
    $name = $_POST["name"];
    $sex = $_POST["sex"];
    $nation = $_POST["nation"];
    $birthday = $_POST["birthday"];
    
    //造连接对象
    $db = new MySQLi("localhost","root","数据库密码","1016");
    
    $sql = "insert into info values('{$code}','{$name}',{$sex},'{$nation}','{$birthday}')";
    
        /*布尔型数据非常特殊
        '{$sex}'  {sex}加了单引号之后变成了字符串,字符串往布尔型数据里扔永远是一个true,因此不能加单引号*/
    $db->query($sql);
    
    header("location:1028afternoonmain.php");
    
    
    
    ?>
    1028afternoonaddchuli.php
    <?php
    //处理页面是不让用户看到的页面,全部使用PHP代码,把HTML代码删掉,因此可以不写结束标记
    //取值
    $code = $_GET["c"];
    
    //造连接对象
    $db = new MySQLi("localhost","root","数据库密码","1016");
    
    $sql = "delete from info where code = '{$code}'";
    
    $r = $db->query($sql);
    
    if($r)
    {
        header("location:1028afternoonmain.php");
    }
    else
    {
        echo "删除失败!";    
    }
    
    
    
    
    
    
    
    ?>
    1028afternoonshanchu.php
    <?php
    //这种页面不能直接跳转,要通过上一个页面跳转
    //把提交的5个值取出
    $code = $_POST["code"];
    $name = $_POST["name"];
    $sex = $_POST["sex"];
    $nation = $_POST["nation"];
    $birthday = $_POST["birthday"];
    //造连接对象
    $db = new MySQLi("localhost","root","数据库密码","1016");
    //写sql语句 set name='{$name}' 把数据库的name修改成用户输入的name
    $sql = "update info set name='{$name}',sex={$sex},nation='{$nation}',birthday='{$birthday}' where code='{$code}'";
    echo $sql;
    $db->query($sql);
    
    header("location:1028afternoonmain.php");
    
    
    
    
    ?>
    1028afternoonxiugaichuli.php
  • 相关阅读:
    Android-WebView路由登录192.168.1.1
    Win7 & VirtualBox虚拟Ubuntu 本地虚拟机之间文件共享
    Android 简单的JNI编程
    Android ActionBar简单使用
    多个APK之间简单数据共享
    js代码移动Div 移动平台与PC平台
    JavaScript面向对象
    《SSO CAS单点系列》之 APP原生应用如何访问CAS认证中心
    insh.exe:*** Couldn't reserve space for cygwin's heap,Win32 error 0
    解决:SSM框架中普通类调用Service的问题 (转)
  • 原文地址:https://www.cnblogs.com/zsczsc/p/6119629.html
Copyright © 2020-2023  润新知