1. 程式人生 > >【php增刪改查實例】第四節 -自己 DIY 一個數據庫管理工具

【php增刪改查實例】第四節 -自己 DIY 一個數據庫管理工具

user clas 記錄 split函數 增刪 err sset post 個數

本節介紹如何自己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>";

        }



        

        

    }

    
?>

【php增刪改查實例】第四節 -自己 DIY 一個數據庫管理工具