Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP执行SQL文件并将数据插入数据库表_Php_Mysql_Sql Server_Database - Fatal编程技术网

如何使用PHP执行SQL文件并将数据插入数据库表

如何使用PHP执行SQL文件并将数据插入数据库表,php,mysql,sql-server,database,Php,Mysql,Sql Server,Database,我有一个从本地主机上的另一个数据库(名为test)创建的SQL文件,现在我想通过PHP脚本将此数据插入另一个数据库(名为server\u db) 我试过了,我的PHP脚本运行良好,并将表创建到server\u db数据库中。 但这些表中的值并没有插入。。。。。请帮忙 下面给出了我的PHP代码 我认为您需要检查SQL文本文件编码。因为每个编码的行分隔符并不总是“\n”。您可以尝试使用“\r”进行更改。我认为您需要检查SQL文本文件编码。因为每个编码的行分隔符并不总是“\n”。如果您在本地主机上可以

我有一个从本地主机上的另一个数据库(名为
test
)创建的SQL文件,现在我想通过PHP脚本将此数据插入另一个数据库(名为
server\u db

我试过了,我的PHP脚本运行良好,并将表创建到
server\u db
数据库中。 但这些表中的值并没有插入。。。。。请帮忙

下面给出了我的PHP代码
我认为您需要检查SQL文本文件编码。因为每个编码的行分隔符并不总是
“\n”
。您可以尝试使用
“\r”

进行更改。我认为您需要检查SQL文本文件编码。因为每个编码的行分隔符并不总是
“\n”
。如果您在本地主机上可以使用函数,则可以尝试使用
“\r”

进行更改


如果您在localhost上运行,则可以将函数用于


试试这个。只是写了出来,意识到我没有这个功能。您需要验证
是行的最后一个字符,按
分解可能导致错误的中间数据拆分。下面的方法只是缓冲行,直到找到终止的
,然后将它们插入数组并重置缓冲区

function parse_sql_file($filepath) {

    $queries = [];
    $sql_query = [];
    $lines = file($filepath);

    foreach($lines as $line) {
        $line = trim($line);
        // This is a comment: move on, nothing to see here.
        if (substr($line, 0, 2) == '--') continue;

        $sql_query[] = $line;

        // We found a terminator: do the needful.
        if (substr($line, -1) == ';') {
            $queries[] = trim( implode("\n", $sql_query) );
            $sql_query = [];
        }
    }

    return $queries;
}

$queries = parse_sql_file('my.sql');
var_dump($queries);

试试这个。只是写了出来,意识到我没有这个功能。您需要验证
是行的最后一个字符,按
分解可能导致错误的中间数据拆分。下面的方法只是缓冲行,直到找到终止的
,然后将它们插入数组并重置缓冲区

function parse_sql_file($filepath) {

    $queries = [];
    $sql_query = [];
    $lines = file($filepath);

    foreach($lines as $line) {
        $line = trim($line);
        // This is a comment: move on, nothing to see here.
        if (substr($line, 0, 2) == '--') continue;

        $sql_query[] = $line;

        // We found a terminator: do the needful.
        if (substr($line, -1) == ';') {
            $queries[] = trim( implode("\n", $sql_query) );
            $sql_query = [];
        }
    }

    return $queries;
}

$queries = parse_sql_file('my.sql');
var_dump($queries);

使用命令行选择数据库,然后选择源。同样,请看一看PDO这里有一个额外的大括号
}$path
您可以使用
文件()
而不是按
\n
分解。如果你
var\u dump($content)
,你会得到什么?您可能需要检查行的最后一个字符是否为“;”,而不是
分解(“;”…
),指示正确的语句结尾,而不是实际数据中任何一个可能的分号。使用命令行选择数据库,然后选择源。同样,请看一看PDO这里有一个额外的大括号
}$path
您可以使用
文件()
而不是按
\n
分解。如果你
var\u dump($content)
,你会得到什么?您可能需要检查行的最后一个字符是否为“;”,而不是
分解(“;”…
),指示正确的语句结尾,而不是实际数据中任何一个可能的分号。使用命令行选择数据库,然后选择源。同样,请看一看PDO这里有一个额外的大括号
}$path
您可以使用
文件()
而不是按
\n
分解。如果你
var\u dump($content)
,你会得到什么?您可能需要检查行的最后一个字符是否为“;”,而不是
分解(“;”…
),表示正确的语句结尾,而不是实际数据中任何一个可能的分号。谢谢@Helmi Joe,我会试试。再次感谢你的帮助。谢谢@Helmi Joe我会试试的。再次感谢你的帮助。谢谢@Helmi Joe我会试试的。再次感谢你的帮助。
function parse_sql_file($filepath) {

    $queries = [];
    $sql_query = [];
    $lines = file($filepath);

    foreach($lines as $line) {
        $line = trim($line);
        // This is a comment: move on, nothing to see here.
        if (substr($line, 0, 2) == '--') continue;

        $sql_query[] = $line;

        // We found a terminator: do the needful.
        if (substr($line, -1) == ';') {
            $queries[] = trim( implode("\n", $sql_query) );
            $sql_query = [];
        }
    }

    return $queries;
}

$queries = parse_sql_file('my.sql');
var_dump($queries);