Heim >Backend-Entwicklung >PHP-Tutorial >php实现的简单mysql工具(执行多条sql语句)

php实现的简单mysql工具(执行多条sql语句)

WBOY
WBOYOriginal
2016-07-25 08:57:171257Durchsuche
本文介绍下,php实现的一个简单的mysql工具,可能执行多条sql语句,有需要的朋友参考下。

代码如下:

<?php
header('Content-Type:text/html;charset=GBK');
?>
<form action="" method="post">
<textarea name="sql" cols="90" rows="12"></textarea><br />
<input name="" type="Submit" value="OK!!" />
</form>
<?php
/**
* 简单mysql工具
* 执行多条sql语句
* edit by bbs.it-home.org
*/
if(isset($_GET['sg'])){
 $_SESSION['sg']=$_GET['s'];
}
if(isset($_GET['su'])){
 $_SESSION['su']=$_GET['s'];
}

if(isset($_POST['sql'])){
    $conn = mysql_connect('127.0.0.1', "root", "123qwe");

    if (!$conn) {
        echo "Unable to connect to DB: " . mysql_error();
        exit;
    }

    if (!mysql_select_db("pm")) {
        echo "Unable to select mydbname: " . mysql_error();
        exit;
    }
 if($_SESSION['sg']){
     mysql_query("set names 'gbk'") or die(mysql_error());
 }
 if($_SESSION['su']){
     mysql_query("set names 'utf8'") or die(mysql_error());
 }
 $sql =trim($_POST['sql']);
 
  preg_match_all("/(select|show|update|delete|drop|create|alter|insert)/s+(([`'/"])[^`'/"]+//3|[^;])+;?/i",$sql,$out,PREG_PATTERN_ORDER );
 if(count($out[0])==0) echo "No sql<br/>";

//解决不输入无分号找不到sql的问题
for($i=0;$i<count($out[0]);$i++){
  $sql = $out[0][$i];
  if(substr(strtolower($sql),0,6)=='select'&&strpos($sql,"()")===false&&!preg_match("/limit /d+(,/d+)?$/i",$sql)){
   $sql .= " limit 100";
  }
  echo '$sql='.$sql.'<hr>';
  
  $result = mysql_query(stripslashes($sql));
 
  if (!$result) {
   echo "<font color=#ff0000>Could not successfully run query ($sql) from DB: " . mysql_error()."</font>";   
   continue;
  }
 
  if (mysql_num_rows($result) == 0) {
   echo "No rows found, nothing to print so am exiting";
   continue;
  }
 
  // While a row of data exists, put that row in $row as an associative array
  // Note: If you're expecting just one row, no need to use a loop
  // Note: If you put extract($row); inside the following loop, you'll
  //       then create $userid, $fullname, and $userstatus
  $str = "";
  while ($row = mysql_fetch_assoc($result)) {
   if($str == ""){
    $str = '<tr  bgcolor="#003366" style="color:#ffffff">';
    foreach($row as $k=>$v){
     $str .= "<td>".$k."</td>";
    }
    $str .= "</tr>";
   }
   $str .= "<tr>";
   foreach($row as $k=>$v){
    $str .= "<td>".$v."</td>";
   }
   $str .= "</tr>";
  }
  @mysql_free_result($result);
  echo "<table border=1 >";
  echo $str;
  echo "</table>";
 } 
}
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn