第四节 -自己 DIY 一个数据库管理工具1.编写php服务器代码

本节介绍如何自己DIY一个数据库管理工具,可以在页面输入sql 进行简单的增删改查操作。

首先,找到xampp的安装目录,打开htdocs:

新建一个php文件,名称为 mysqladmin.php

1.编写php服务器代码

1.1 写上php标签

首先,还是在这个页面,要写php代码,就需要有一个php标签:

我们的php代码要写在这个标签内。

1.2 数据库连接操作

xampp安装的mysql默认没有密码,不写就行。

1.3 获取form表单传过来的sql语句

1.4 用mysql_query函数执行传过来的sql语句

目前为止,代码已经足以对数据库进行增删改,接下来,我们来设计查询sql的实现。

1.5 用split函数分割sql语句,获取表名

1.6 通过表名去获取这张表所有的列,并且把列名用一个数组装起来

1.7 去查询sql中获取的结果集,展示到页面

if($tableName){
            
            $query = mysql_query("select COLUMN_NAME from information_schema.COLUMNS where  TABLE_NAME = '$tableName';") or die("<p style='color:red'>sql报错,错误信息为 ======> ".mysql_error()."</p>");
             
            //对结果集进行遍历 -- mysql_fetch_array
            
            
            $columns = array(); //储存这张表中所有的字段名称
            $count = 0; //记录当前的下标
            
            
            echo "<table>";
            
            echo "<tr>";
            
            while($row = mysql_fetch_array($query)){
                
                $columns[$count] =  $row["COLUMN_NAME"];
                
                echo "<td>" . $row["COLUMN_NAME"] . "</td>";
                
                $count = $count + 1;
                
            }
            
            echo "</tr>";
            
            //echo sizeof($columns);
            
            
            
            
            
            $query_02 = mysql_query($sql) or die("<p style='color:red'>sql报错,错误信息为 ======> ".mysql_error()."</p>");
            
            
            while($row = mysql_fetch_array($query_02)){
                
                echo "<tr>";
                for($i=0;$i<sizeof($columns);$i++){
                    echo "<td>" . $row[$columns[$i]] . "</td>";
                }
                echo "</tr>";
                
            }
            
            echo "</table>";
            
            
        }
        
    } 

演示效果如下:

访问地址:http://localhost:8080/mysqladmin.php

完整的mysqladmin.php 代码:

<form action="mysqladmin.php" method="post" >

    <textarea cols="80" rows="10" id="sql" name="sql"></textarea>

    <br>

    <input type="submit" value="执行"  /> 

</form>

<style>

    th {background: #eaeaea}
    td {border:1px solid #ccc;padding:2px 10px;}
    tr:hover {background: skyblue}
</style>

<?php
    
    //1、连接数据库
    $conn = mysql_connect("localhost","root","");

    //2、选择test数据库
    $db = mysql_select_db("test",$conn);

    //3、设置编码集
    mysql_query("set names utf8");

    

    $sql = "";

    if(isset($_POST["sql"]) && $_POST["sql"] != null){
        $sql = $_POST["sql"];
        echo "<p>您执行的sql为:$sql </p>";   

        echo "<script>document.getElementById('sql').value='".$sql."'</script>";

        //开始真的执行sql

        $query_origin = mysql_query($sql) or die("<p style='color:red'>sql报错,错误信息为 ======> ".mysql_error()."</p>");

        echo "<p style='color:green'>执行成功!</p>";

        /*
            如果是update语句,则返回一个数字
            如果是select语句,则返回一个结果集,比如:Resource id #6
        */

        //echo $query;
        //echo strpos($query."",'Resource');


        //select COLUMN_NAME from information_schema.`COLUMNS` where TABLE_NAME = 'tm_users';
        
        //根据sql语句获取表名
        $arr = split(" ",$sql);
        $tableName = "";

        for($i=0;$i<sizeof($arr);$i++){
            if($arr[$i] == "from"){
                $tableName = $arr[$i+1];
                break;
            }
        }
        
        //echo $tableName;

        //如果表名存在,就去查询这个表中所有的字段
        if($tableName){
            $query = mysql_query("select COLUMN_NAME from information_schema.`COLUMNS` where TABLE_NAME = '$tableName'") or die("<p style='color:red'>sql报错,错误信息为 ======> ".mysql_error()."</p>");
            
            $columns = array();
            $count = 0;


            echo "<table cellpadding=0 cellspacing=0><tr>";

            while($row=mysql_fetch_array($query)){  
                
                $columns[$count++] = $row['COLUMN_NAME'];

            }   

            //遍历数组
            for($i=0;$i<sizeof($columns);$i++){
                echo "<th>$columns[$i]</th>";
            }

            echo "</tr><tr>";
            //然后去这张表里面查询
            while($row=mysql_fetch_array($query_origin)){
                //遍历这张表的列名,然后对应从行中取值
                for($i=0;$i<sizeof($columns);$i++){
                    echo "<td>" . $row["$columns[$i]"] . "</td>";
                }
                //每遍历好一行,就换行
                echo "</tr>";
            }

            echo "</table>";

        }



        

        

    }

    
?>

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

MyCAT全局表描述及示例

1571
来自专栏自由而无用的灵魂的碎碎念

Oracle:创建db_link

global_name也就是数据库的全局数据库名,可已使用select * from global_name;查询:

922
来自专栏重庆的技术分享区

25分钟学会使用MySQL基本操作

1482
来自专栏Java架构师历程

sql必会基础3

对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查...

1292
来自专栏数据和云

深入内核:Oracle数据库里SELECT操作Hang解析

崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracl...

37410
来自专栏大眼瞪小眼

面试-MySQL总结

2NF:每一个非主属性完全依赖于候选码(属性组的值能唯一的标识一个元组,但是其子集不可以)。

1103
来自专栏Java3y

Oracle总结【视图、索引、事务、用户权限、批量操作】

前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了…那么本篇主要总结关于Oralce视图、序列、事务的一些内容… 在数据库中,我们...

4064
来自专栏编程之路

羊皮书APP(Android版)开发系列(二十二)10分钟秒懂单例模式

953
来自专栏Albert陈凯

Hadoop数据分析平台实战——130Hive Shell命令介绍 02(熟悉Hive略过)离线数据分析平台实战——130Hive Shell命令介绍 02(熟悉Hive略过)

离线数据分析平台实战——130Hive Shell命令介绍 02(熟悉Hive略过) 导入数据 Hive的导入数据基本上可以分为三类, 第一种是从linux系...

2765
来自专栏木头编程 - moTzxx

后台 配置页面功能设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

6104

扫码关注云+社区

领取腾讯云代金券