Php 如何从WHERE子句导出MySQL表的一些行?

Php 如何从WHERE子句导出MySQL表的一些行?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,如何从PHP脚本导出带有where子句的MySQL表的一些行 我有一个MySQL say测试,我想使用PHP脚本为id介于10和100之间的行创建一个importable.sql文件 我想创建一个sql文件,比如test.sql,它可以导入MySQL数据库 霉菌代码: $con=mysqli_connect("localhost", "root","","mydatabase"); $tableName = 't

如何从PHP脚本导出带有where子句的MySQL表的一些行

我有一个MySQL say测试,我想使用PHP脚本为id介于10和100之间的行创建一个importable.sql文件

我想创建一个sql文件,比如test.sql,它可以导入MySQL数据库

霉菌代码:

$con=mysqli_connect("localhost", "root","","mydatabase");

$tableName  = 'test';
$backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
$query      = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName WHERE id BETWEEN 10 AND 500";

$result = mysqli_query($con,$query);
这将创建一个test.sql文件,但当我尝试导入时,会出现错误1064。
“我的脚本”只创建了一个文件,其中包含列名为的行和表sturcute或insert query。

如注释中所述,您可以通过以下方式使用mysqldump

mysqldump --user=... --password=... --host=... DB_NAME --where=<YOUR CLAUSE> > /path/to/output/file.sql
如果您想将其保存在php文件中,可以执行以下操作

exec('mysqldump --user=... --password=... --host=... DB_NAME --where=<YOUR CLAUSE> > /path/to/output/file.sql');

如果已使用OUTFILE导出数据,则必须使用infle命令导入数据

$con=mysqli_connect("localhost", "root","","mydatabase");

$tableName  = 'test';
$backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
$query      = "LOAD DATA INFILE '$backupFile' INTO TABLE $tableName";

$result = mysqli_query($con,$query);
或者,您可以使用

 $con=mysqli_connect("localhost", "root","","mydatabase");
 $tableName  = 'test';
 $backupFile = '/opt/lampp/htdocs/practices/phpTest/test.sql';
 $query      = 'SELECT * INTO OUTFILE '."'$backupFile'".'
                FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '.'\'"\'
                LINES TERMINATED BY \'\n\'
                FROM '.$tableName.' WHERE id BETWEEN 10 AND 500';

 $result = mysqli_query($con,$query);
然后导入此文件


希望这能起作用…

以非常简单的方式转到您的phpMyAdmin 选择要导出其特定行的数据库 单击SQL在数据库上运行SQL查询 编写sql查询并执行它 就像从测试表中选择*限制500现在会出现什么结果 在底部,请参见查询结果操作 只需点击导出

全部完成:-

Mysql Shell命令

mysqldump -u user -p password -h host Database Table --where="Condition"> /path/exportFile.sql
范例

mysqldump -u user -p 123456 -h host Database Student --where="age > 10"> /path/exportFile.sql


从php中这样做是绝对必要的吗?有可能使用mysqldump吗?除非你想自己构建insert语句,否则我认为这是不可能的。你可以执行mysqldump,尽管我不想从php加载。我想使用phpmyadmin加载,但从php$query='SELECT*导出到OUTFILE'$备份文件。字段以“.”、“.”结尾可选地用“.”括起来以“.”结尾的行\n.'来自“$tableName.”,其中id介于10和500之间;但它什么也不创建。我已经编辑了查询。。。请重新检查并确保您使用了正确的路径。。我已经使用过它,它工作得非常好…检查文件夹/opt/lampp/htdocs/practices/phpTestexec'mysqldump-user=root-password=-host=localhost-mytest-test-where=>/opt/lampp/htdocs/practices/phpTest/test.sql'中的权限是否正确;我不工作。我写对了吗。如果我错了,请纠正我。exec'mysqldump-user=root-password=-host=localhost mytest-where=id介于10和500之间>/opt/lampp/htdocs/practices/phpTest/test.sql';它创建一个黑色文件。文件中没有任何内容。您能检查WHERE子句中的查询吗,下面的链接将引导您完成,它适用于我发布的一个示例,但如果我在下面使用,则不起作用:exec'mysqldump-t-user=root-password=-host=localhost mytest-test-where=id IN SELECT st stu id from state where std_id from std std_id介于145000和150769之间>/opt/lampp/htdocs/practices/phpTest/fb_posts.sql';太好了!我不知道——或者至少忘记了这种可能性。这是使用phpmyadmin时最简单的方法!这是最简单的解决方案我找不到按钮查询结果操作。注意:我有v4.2.1。当您在phpmyadmin中运行任何查询时,查询结果操作是一个部分,就在查询结果的下方,您可以看到查询结果操作:打印视图导出。但是,当您使用联接时,它不允许您以sql格式导出数据!