+ -
当前位置:首页 → 问答吧 → 求用PHP把SQL文件导入MYSQL中的源代码

求用PHP把SQL文件导入MYSQL中的源代码

时间:2009-11-05

来源:互联网

求用PHP把SQL文件导入MYSQL中的源代码,在网上看了好多!可是我下载下来后就是不能用
<?php
@header("content-Type: text/html; charset=utf-8");
error_reporting(0);

function runquery($sql) {
    global $dbcharset, $db_prefix, $DB, $tablenum;
    $sql = str_replace("\r", "\n", $sql);
    $ret = array();
    $num = 0;
    foreach(explode(";\n", trim($sql)) as $query) {
        $queries = explode("\n", trim($query));
        foreach($queries as $query) {
            $ret[$num] .= $query[0] == '#' ? '' : $query;
        }
        $num++;
    }
    unset($sql);
    foreach($ret as $query) {
        $query = trim($query);
        if ($query) {
            if (substr($query, 0, 12) == 'CREATE TABLE') {
                $name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query);
                echo '创建表 ' . $name . ' ... <font color="#0000EE">成功</font><br />';
                mysql_query(createtable($query, $dbcharset));
                $tablenum++;
            } else {
                mysql_query($query);
            }
        }
    }
}
function createtable($sql, $dbcharset) {
    $type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
    $type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
    return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql) .
    (mysql_get_server_info() > '4.1' ? " ENGINE=$type DEFAULT CHARSET=$dbcharset" : " TYPE=$type");
}

//设置样式
$css = <<< DOC
<style type="text/css" media="screen">
body {
    background-color:#fff;
    line-height:1.6;
    font-size:12px;
    font-family:宋体, Arial;
    color:#666;
    word-break:break-all;
}
</style>
DOC;
echo $css;

$servername = "localhost"; //数据库服务器地址
$dbusername = "root"; //帐号
$dbpassword = "1111"; //密码
$dbname = "D";
//$dbname = $_GET['dbname']; //数据库名称,部分从url获得

$dbcharset = 'utf8';
$sqlfile = 'R.sql'; //本机导出的Sql文件

if (!is_readable($sqlfile)) {exit('数据库文件不存在或者读取失败');}
$fp = fopen($sqlfile, 'rb');
$sql = fread($fp, 2048000);
fclose($fp);

$conn = mysql_connect($servername, $dbusername, $dbpassword); //指定数据库连接参数
if (!$conn) {die('不能连接数据库服务器: ' . mysql_error());}

$sqlstr = "create database " . $dbname;
//mysql_query($sqlstr) or die("无法创建数据库.");
mysql_select_db($dbname) or mysql_query($sqlstr) or die("无法创建数据库.");//如果有数据库进入,无就新建,建不了提示
runquery($sql) or die("无法导入数据文件."); //导入数据文件
mysql_close($conn);
?>
都是到runquery($sql) or die("无法导入数据文件."); //导入数据文件
这句错误!提示无法导入数据文件

作者: hbbyang   发布时间: 2009-11-05