2012-01-02 6 views
0

私のサイトにはインストールパートがあります。そのデータベースはインポートされています(データベースのバックアップファイルはルートフォルダにあります).Soデータベースの後にテーブル名を表示したいつまり、table1がインポートされている場合はtable1 is imported、table2がインポートされている場合はtable2 is importedとなります。データベースのインポートアクションの間にテーブル名を表示

どうすればいいですか。

これは私のajaxコードです。

function run_install() 
{ 
//alert("process.php"); 
$.ajax({ 
type: "POST", 
url: "process.php", 
data: {method: 'database'}, 
success: function(msg){ 
//alert(msg); 
} 
}); 
} 

これはprocess.phpページ内の関数である:

if($method == "database") { 
    $base_url=$_SESSION['base_url']; 
    $db_name=$_SESSION['db_name']; 
    $uname=$_SESSION['uname']; 
    $db_pwd=$_SESSION['pwd']; 
    $db_host=$_SESSION['db_host']; 
    clear_db($db_host,$uname,$db_pwd,$db_name); 
    $conct=mysql_connect($db_host,$uname,$db_pwd); 
    mysql_select_db($db_name,$conct); 
    if(mysql_install_db($db_name, "launchrock.sql", $errmsg)) 
    { 
    } 
    else{ 
    echo 0; 
    } 
} 

function mysql_install_db($dbname, $dbsqlfile, &$errmsg) 
{ 
     $result = true; 

     if(!mysql_select_db($dbname)) 
     { 
      $result = mysql_query("CREATE DATABASE $dbname"); 
     if(!$result) 
     { 
      $errmsg = "could not create [$dbname] db in mysql"; 
      return false; 
     } 
     $result = mysql_select_db($dbname); 


     if(!$result) 
     { 
      $errmsg = "could not select [$dbname] database in mysql"; 
      return false; 
     } 
     } 
     else{ 
     $result = mysql_import_file($dbsqlfile, $errmsg); 
     //$result = "dfgdfG"; 
     return $result; 
     } 
    } 

function mysql_import_file($filename, &$errmsg) 
{ 
    /* Read the file */ 
     $lines = file($filename); 

     if(!$lines) 
     { 
      $errmsg = "cannot open file $filename"; 
      return false; 
     } 

     $scriptfile = false; 

    /* Get rid of the comments and form one jumbo line */ 
     foreach($lines as $line) 
     { 
      $line = trim($line); 

      if([email protected]('^--', $line)) 
      { 
      $scriptfile.=" ".$line; 
      } 
     } 

    if(!$scriptfile) 
    { 
     $errmsg = "no text found in $filename"; 
     return false; 
     // $status==0; 
    } 

    /* Split the jumbo line into smaller lines */ 

    $queries = explode(';', $scriptfile); 

    /* Run each line as a query */ 

    foreach($queries as $query) 
    { 
     $query = trim($query); 
     if($query == "") { continue; } 
     if(!mysql_query($query.';')) 
     { 
     $errmsg = "query ".$query." failed"; 
     return false; 
     // $status==0; 
     } 
     else 
     { 
     $status=1; 
     } 
    } 
    if($status==1) 
    { 
    return true; 
    } 
} 
+1

eregの正規表現関数は廃止予定であり、今後のリリースのPHPでは削除される可能性があることはご存知でしょうか? – GordonM

答えて

0

あなたはSHOW TABLES SQLステートメントを使用してスキーマ内のテーブルのリストを取得することができます。

あなたはmysqlコマンドラインクライアントを使用して一連のSQL文を自動的に実行できることにご存知ですか?バックアップと仮定すると、スキーマとデータのSQLダンプであなただけの設定、サーバー/ PHPによってはあなたがshell_exec()機能を使って、これを実行することができるかもしれ

mysql -u {username} -p {password} {schema_name} < /path/to/backup/file 

を実行することができます。これは、あなたのユーザー名とパスワードがpsを介して同じサーバー上の他のユーザーに見えることを意味するかもしれませんが、オプションファイルを使用してこれを回ることができます。

関連する問題