在我的网站上有一个安装部分。导入数据库(数据库备份文件在根文件夹中)。所以我想在数据库导入完成后列出表名。这意味着如果有10个表,如果导入了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(!@ereg('^--', $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;
}
}
答案 0 :(得分:0)
您可以使用SHOW TABLES sql语句获取模式中的表列表。
您是否意识到可以使用mysql命令行客户端自动运行一堆SQL语句?假设您的备份是架构和数据的SQL转储,您可以运行
mysql -u {username} -p {password} {schema_name} < /path/to/backup/file
根据您的服务器/ PHP设置,您可以使用shell_exec()功能运行此功能。请注意,这可能意味着您的用户名和密码可通过ps在同一服务器上对其他用户可见,但您可以使用选项文件来解决此问题。