2012-07-10 14 views
0

我是新來的開發區。對於我的產品,我需要處理將近100張桌子。我覺得在數據庫中找到一個單詞是有風險的。是否有任何查詢可用於搜索數據庫中任何表中可用的單詞。如果可能的話,結果會給出表名。任何查詢/方式可用於搜索數據庫中的單詞?

謝謝...

+0

是否需要一次或重複執行此操作。 – 2012-07-10 13:04:49

+0

@Deepak,你能接受對你有用的答案嗎? – DonSeba 2012-07-19 09:30:33

+0

@ Naveen kumar:我被要求重複這樣做。 – 2012-07-20 10:04:11

回答

1

有MySQL中的全文搜索選項..但它同時作用於一個表。

搜索你要麼需要寫一些動態查詢,或反規範化

0

,如果你有phpMyAdmin有可能多個表。選擇您的數據庫,然後選擇搜索選項卡。您可以選擇一個或多個表格進行搜索。如果將字段名稱留空,它將在任何字段中進行搜索。比你可以通過表查看結果。 (注:我在phpMyAdmin V3.2測試)

0

爲獨立的解決方案,我建議這樣的功能:

<?php 
function search_all_databases($search_token){ 
    $db = array(
      'host'  => 'localhost' 
     ,'user'  => 'root' 
     ,'pass'  => '' 
     ,'database' => 'buns' 
     ,'prefix' => '' 
     ,'type'  => 'mysqli' 
    ); 

    $mysqli = new mysqli($db['host'], $db['user'], $db['pass'], $db['database']); 

    $output = "<table><thead><tr><th> Database Name </th><th> Occurence </th></tr></thead>"; 

    $sql = "show tables"; 
    $ret = $mysqli->query($sql); 

    if(0 < $ret->num_rows){ 
     $output.= '<tbody>'; 

     while($row = $ret->fetch_array()){ 
      $output.= '<tr>'; 
      $sql_search_fields = Array(); 

      $table = $row[0]; 
      $output.= '<td>'.$table.'</td>'; 

      $sql2 = "SHOW COLUMNS FROM ".$table; 
      $ret2 = $mysqli->query($sql2); 
      if(0 < $ret2->num_rows){ 
       while($row2 = $ret2->fetch_array()){ 
        $colum = $row2[0]; 
        $sql_search_fields[] = "`".$colum."` like('%".$search_token."%')"; 
       } 

       $ret2->close(); 
      } 

      if(0 < count($sql_search_fields)){ 
       $search = "select * from ".$table." where "; 
       $search.= implode(" OR ", $sql_search_fields); 

       $rs3 = $mysqli->query($search); 
       $output.= '<td>'.$rs3->num_rows.'</td>'; 
      }else{ 
       $output.= '<td>0</td>'; 
      } 

      if(0 < $rs3->num_rows){ 
       $rs3->close(); 
      } 

      $output.= '</tr>'; 
     } 

     $output.= '</tbody>'; 
     $ret->close(); 
    } 

    return $output; 
} 

echo search_all_databases('a'); 

此功能視mysqli的,你可以把它改成像MySQL數據庫的另一個方法。

此外,這將輸出一個表與結果。如果你想在另一個位置使用結果,我建議將所有結果放在一個數組中。