我正在使用这个PHP代码将一个列从MYSQL表转储到一个文本文件中,但它最终要么不转储数据,要么转发整个数据库而不是确认SQL语句而只转储该列中的数据本身。我做错了什么?
$file = 'file.txt';
if(is_file($file))
unlink($file);
$sql = 'SELECT column FROM table';
我试过不同的命令行,
以下行:
$cmd = 'mysqldump --user=xxx --host=localhost --password=xxx mydatabase \''.$sql.'\' > '.$file;
转储一组文本,例如,
-- Server version 5.0.95-community
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
这一行将整个数据库转储到文件中:
$cmd = 'mysqldump --user=xxx --password=xxx --host=localhost mydatabase > file.txt';
exec($cmd);
我知道上面这行我实际上并没有查询数据库,但这是我需要帮助的部分。
答案 0 :(得分:1)
我不记得mysqldump
曾经将查询视为一种选择。
也许只是..运行查询?
答案 1 :(得分:0)
我建议设置连接,运行查询fopen('file.txt', 'w')
,然后遍历查询结果并fwrite
发送文件。
也许是这样的......当然你的连接字符串会有所不同。我没有对它进行测试,因此我会在制作之前仔细检查所有内容。
$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$conn) {
die('Could not connect: ' . mysql_error());
}
$file = 'file.txt';
$sql = 'SELECT column FROM table';
$results = mysql_query($sql , $conn);
$fh = fopen($file, 'w');
foreach($results as $line){
fwrite($fh, $line);
}
fclose($fh);
mysql_close($link);
答案 2 :(得分:0)
使用mysql客户端使用自定义查询而不是mysqldump:
$cmd = 'mysql --user=xxx --password=xxx --host=localhost --skip-column-names mydatabase -e \"SELECT column FROM table\" > file.txt';
exec($cmd);
答案 3 :(得分:0)
你几乎在那里添加-w选项然后从你的select的where子句中添加条件,例如:
mysqldump -uroot -p dbname tablename -w "id > 100 and income > 2000;" > output.txt
答案 4 :(得分:0)
我想通了一个自定义命令行user built for a similar issue。
所以现在我有:
$cmd = "mysql --user=xxx --password=xxx --host=localhost --database=xxx --execute='SELECT `column` FROM Table LIMIT 0, 10000 '> file.txt";
exec($cmd);
这正是我所需要的。唯一的问题是它不能在XAMPP上运行,只能在我的Web服务器上运行。也许需要解决一些问题。感谢那些提供代码的人。