Advertisement
gitlez

YA: Search An Entire MySQL Database 20120715232139AAL4jEE

Jul 16th, 2012
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.90 KB | None | 0 0
  1. <?php
  2.  
  3. session_start(); // Will be using sessions for minor caching; increasing performance/speed
  4.  
  5. /*    Functions    */
  6. function db_connect(){
  7.     Global $conn;
  8.     $conn = mysql_connect('localhost','root','') or die('Cannot Connect To MySQL Server because: ' . mysql_error());
  9. }
  10. function db_select_db($dbname){
  11.     Global $conn;
  12.     mysql_select_db($dbname, $conn) or die('Cannot Select database "' .$dbname . '" because: ' . mysql_error($conn));
  13. }
  14. function db_tables($dbname){
  15.     if( isset($_SESSION['dbs'][$dbname]['__tables'])){ // Retrieve From Cache if exists
  16.         return $_SESSION['dbs'][$dbname]['__tables'];
  17.     }
  18.     Global $conn;
  19.     $dbname = mysql_real_escape_string($dbname);
  20.     $stmt = "SHOW TABLES FROM " . $dbname;
  21.     $r = mysql_query($stmt, $conn) or die('Query [' . $stmt . '] failed because: ' . mysql_error($conn));
  22.     $tables = Array();
  23.     while($row = mysql_fetch_array($r)){
  24.         $tables[] = $row[0];
  25.     }
  26.     if( isset($_SESSION['dbs'][$dbname])){
  27.         $_SESSION['dbs'][$dbname]['__tables'] = $tables;
  28.     }
  29.     return $tables;
  30. }
  31. function db_columns($dbname, $tblname){
  32.     if( isset($_SESSION['dbs'][$dbname]['__columns'][$tblname])){
  33.         return $_SESSION['dbs'][$dbname]['__columns'][$tblname];
  34.     }
  35.     Global $conn;
  36.     $dbname = mysql_real_escape_string($dbname);
  37.     $tblname = mysql_real_escape_string($tblname);
  38.     $stmt = "SHOW COLUMNS FROM {$dbname}.{$tblname}";
  39.     $r = mysql_query($stmt, $conn) or die('Query [' . $stmt . '] failed because: ' . mysql_error($conn));
  40.     $columns = Array();
  41.     while($row = mysql_fetch_row($r)){
  42.         $columns[] = $row[0];
  43.     }
  44.     if( isset($_SESSION['dbs'][$dbname])){
  45.         $_SESSION['dbs'][$dbname]['__columns'][$tblname] = $columns;
  46.     }
  47.     return $columns;
  48. }
  49. function db_databases(){
  50.     if( isset($_SESSION['dbs']) && is_array($_SESSION['dbs']) && count($_SESSION['dbs']) > 0){ // Retrieve From Cache if exists
  51.         return array_keys($_SESSION['dbs']);
  52.     }
  53.     Global $conn;
  54.     $stmt = "SHOW DATABASES";
  55.     $r = mysql_query($stmt, $conn) or die('Query [' . $stmt . '] failed because: ' . mysql_error($conn));
  56.     $dbs = Array();
  57.     while($row = mysql_fetch_array($r)){
  58.         $dbs[$row[0]] = Array();
  59.     }
  60.     $_SESSION['dbs'] = $dbs;
  61.     return array_keys($dbs);
  62. }
  63. if( isset( $_POST['submit'] )){
  64.    
  65. }
  66. function load_db_structure($dbname){
  67.     if( isset($_SESSION['dbs'][$dbname]) ){
  68.         return $_SESSION['dbs'][$dbname];
  69.     }
  70.     db_connect();
  71.     foreach(db_tables($dbname) as $tbl){
  72.         db_columns($dbname, $tbl);
  73.     }
  74.     return $_SESSION['dbs'][$dbname];
  75. }
  76.  
  77. function results_to_table($results, $dbname, $tbl){
  78.     $table = '<table cellspacing="1" border="1" style="width: 100%">';
  79.     $columns =  db_columns($dbname, $tbl);
  80.     $colCount = count($columns);
  81.     $table .= '    <tr>
  82.        <td colspan="' . $colCount . '"><span style="font-style: italic;">' . $dbname . '</span>.<span style="font-weight: bold;font-size: 130%">' . $tbl . '</span></td>
  83.    </tr>' . PHP_EOL;
  84.     $table .= '    <tr>' . PHP_EOL;
  85.     foreach ($columns as $col){
  86.         $table .= '        <th>' . $col . '</th>' . PHP_EOL;
  87.     }
  88.     $table .= '    </tr>' . PHP_EOL;
  89.     while($row = mysql_fetch_row($results)){
  90.         $table .= '    <tr>' . PHP_EOL;
  91.         foreach($row as $val){
  92.             $table .= '        <td>' . $val . '</td>' . PHP_EOL;
  93.         }
  94.         $table .= '    </tr>' . PHP_EOL;
  95.     }
  96.     $table .= '</table><br><br>' . PHP_EOL;
  97.     return $table;
  98. }
  99.  
  100.  
  101. /*    Processing    */
  102.  
  103. $search = (isset($_POST['search']))? trim($_POST['search']) : '';
  104.  
  105. if( strlen($search) > 0){
  106.     db_connect();
  107.     $search = mysql_real_escape_string($search);
  108.     $dbname = $_POST['pmo'];
  109.     load_db_structure($dbname);
  110.     $tables = db_tables($dbname);
  111.     $results = '';
  112.     foreach($tables as $tbl){
  113.         $columns = db_columns($dbname, $tbl);
  114.         $stmt = "SELECT * FROM {$dbname}.{$tbl} WHERE ";
  115.         $i =0;
  116.         foreach($columns as $col){
  117.             if( $i++ > 0){
  118.                 $stmt .= ' OR ';
  119.             }
  120.             $stmt .= $col . " LIKE '%" . $search . "%'";
  121.         }
  122.         $r = mysql_query($stmt, $conn) or die('Query [' . $stmt . '] failed because: ' . mysql_error($conn));
  123.         if( mysql_num_rows($r) > 0){
  124.             $results .= results_to_table($r, $dbname, $tbl);
  125.         }
  126.     }
  127.     if( strlen( $results ) > 0){
  128.         echo '<h2>Results for "' . $search . '"</h2>' . PHP_EOL;
  129.         echo $results;
  130.     }else{
  131.         echo '<h2>No Results Found for "' . $search . '"</h2>' . PHP_EOL;
  132.         $search = '';
  133.     }
  134. }
  135. echo '<form method="post">
  136.    <input type="text" name="search" value="' . $search . '">';
  137. echo '<select name="pmo">';
  138. db_connect();
  139. foreach(db_databases() as $dbname){
  140.     echo '<option value="' . $dbname . '">' . $dbname . '</option>';
  141. }
  142.  
  143. echo '
  144.    <input type="submit" value="Search">
  145. </form>';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement