zoukankan      html  css  js  c++  java
  • 【php增删改查实例】第四节 -自己 DIY 一个数据库管理工具

    本节介绍如何自己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>";
    
    		}
    
    
    
    		
    
    		
    
    	}
    
    	
    ?>
    
  • 相关阅读:
    搭建jenkins jmeter持续集成
    Jenkins windows环境搭建
    Appium环境搭建(二)
    Qt webkitwidgets模块和webenginewidgets模块
    Qt程序无法输入中文的问题
    在Qt中使用SQLite数据库
    Ubuntu下搜狗拼音输入法打不出汉字的解决方法
    drupal7创始人root忘记密码的解决办法
    javascript块级作用域
    javascript闭包
  • 原文地址:https://www.cnblogs.com/skyblue-li/p/9056135.html
Copyright © 2011-2022 走看看