2012-01-02 26 views
0

在我的网站中有一个安装部分。在那个数据库导入(数据库备份文件在根文件夹中)。所以我想列出数据库后的表名导入完成。这意味着如果有10个表,如果导入table1,则列出table1 is imported,如果导入表2,则列出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 2012-01-02 10:35:55

回答

0

您可以通过使用SHOW TABLES SQL语句的模式获得表的列表。

您是否知道您可以通过使用mysql命令行客户端自动运行一堆SQL语句?假设您的备份架构和数据的SQL转储,你可以只运行

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

根据您的服务器/ PHP设置您可以使用shell_exec()函数来运行此。请注意,这可能意味着您的用户名和密码通过ps在同一台服务器上的其他用户可见,但您可以通过使用选项文件来解决此问题。