通过PHP获取MySQL文件的源代码?

通过PHP获取MySQL文件的源代码?,php,mysql,Php,Mysql,如何通过php获取.sql文件(如下面的文件)的源代码 CREATE DATABASE IF NOT EXISTS data_base; USE data_base; CREATE TABLE IF NOT EXISTS the_table( package_name varchar(50) NOT NULL, PRIMARY KEY (`package_name`) ) 我尝试了以下方法,但不起作用。我试着做了一些研究,似乎我需要做一些叫做加载数据填充的事情,但我不明白 m

如何通过php获取.sql文件(如下面的文件)的源代码

CREATE DATABASE IF NOT EXISTS data_base;
USE data_base;
CREATE TABLE IF NOT EXISTS the_table( 
    package_name varchar(50) NOT NULL,
    PRIMARY KEY (`package_name`)
)
我尝试了以下方法,但不起作用。我试着做了一些研究,似乎我需要做一些叫做加载数据填充的事情,但我不明白

mysql_query("source C:/xampp/htdocs/Project1/mysql/source.sql;") or die(mysql_error());

如何使用PHP获取.sql文件的源代码?谢谢。

您将
mysql
命令行语句与PHP函数调用混合在一起。做一个或另一个

使用
mysql
CLI(如果可用):


注意:这是一个潜在的安全风险。请注意。

即使使用mysqli::multi_query(),也不能只运行SQL脚本。SQL脚本可以包含一些命令,这些命令只能由mysql客户端识别,而不能由mysql服务器的SQL解析器识别

SOURCE
无疑是一个由mysql客户端预处理的命令。服务器不理解该命令。因此,您不能使用查询API在服务器上执行
SOURCE

如果您可以限制SQL脚本的内容以排除mysql客户端内置命令,那么使用mysqli::multi_query()可能有效。但它不适用于SQL脚本中允许的完整命令集

另见我对这一问题的答复


LOAD DATA Infle不执行SQL语句来创建表,它只是将文本文件的字段加载到现有表中。

好的,这是我刚刚偶然发现的一个非常旧的表,但我没有看到任何人提到我一直在为我做的工作——注意我没有查找它,只是想了想,它工作了很多年,所以我一直在使用它,可能不是最安全的方式。 如果查询已经存在于.sql文件中,我总是将其作为文本文件读入,并使用php中的fgets()函数一次传递一行

例如,如果它位于.sql文件中

CREATE DATABASE Testing123;
USE Testing123;
CREATE TABLE testData(name VARCHAR(32), age INT, town VARCHAR(32));
INSERT INTO testData(name, age, town) VALUES('Chris', 42, 'Clarksville');
然后使用此html表单从网页上载:

<form method="POST" action="import_sql_file.php" enctype="multipart/form-data">
    <p><input type="file" name="data"/></p>
    <p><input type="submit" value="Import"/></p>
</form>

我一直用于将其导入数据库的import_sql_file.php脚本如下所示:

<?php
    $file = $_FILES['data']['tmp_name'];
    $db = new mysqli("localhost", "root", "");
    $fromFile = fopen($file, "r");
    while(!feof($fromFile)){
        $query = fgets($fromFile);
        $db->query($query);
    }
    $db->close();
?>


使用源$\u文件['data']['tmp\u name']在第一次尝试时失败,然后在第二次尝试时这种想法奏效,因此我从未真正研究过使用SQL命令的更直接方法。

SQL文件可能是恶意的(即伪造的、用户生成的等)。此外,您对多查询的错误控制有限。关键是它应该在非常具体和有限的情况下运行。
<form method="POST" action="import_sql_file.php" enctype="multipart/form-data">
    <p><input type="file" name="data"/></p>
    <p><input type="submit" value="Import"/></p>
</form>
<?php
    $file = $_FILES['data']['tmp_name'];
    $db = new mysqli("localhost", "root", "");
    $fromFile = fopen($file, "r");
    while(!feof($fromFile)){
        $query = fgets($fromFile);
        $db->query($query);
    }
    $db->close();
?>