如何使用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);