将 var_dump 保存到文本文件中[关闭]

Posted

技术标签:

【中文标题】将 var_dump 保存到文本文件中[关闭]【英文标题】:save var_dump into text file [closed] 【发布时间】:2016-12-20 00:55:11 【问题描述】:

我有sql查询的php代码

<?
$server = "127.0.0.1";
$username = "root";
$password = "1";

$link= connecttodb($server,$username,$password);

function connecttodb($server,$username,$password)


    $rez=fopen("test.txt","ab");
    if ($link=mysql_connect ("$server","$username","$password",TRUE))
    
        fwrite($rez,"".$server." \r\n");
	    echo "Connected successfully to >> " .$server ;
		
		$result = mysql_query('SHOW DATABASES');
        echo "<br>";
        while ($row = mysql_fetch_array($result))
        
            var_dump ($row); 
	    
    
    ini_set('max_execution_time', 10);
    return $link;
?>

此代码在浏览器上打印我的数据库名称 如何将数据库名称保存到文本文件中

Connected successfully to >> 127.0.0.1
array(2)  [0]=> string(18) "information_schema" ["Database"]=> string(18) "information_schema"  array(2)  [0]=> string(2) "db" ["Database"]=> string(2) "db"  array(2)  [0]=> string(5) "mysql" ["Database"]=> string(5) "mysql"  array(2)  [0]=> string(10) "phpmyadmin" ["Database"]=> string(10) "phpmyadmin"  array(2)  [0]=> string(4) "test" ["Database"]=> string(4) "test" 

【问题讨论】:

如果您启动与数据库的连接,那么您必须知道数据库的名称 请不要使用the mysql_ database extension,它已被弃用(在PHP7 中已不复存在)特别是如果您刚刚学习PHP,请花精力学习PDO 数据库扩展。 Start here 真的很简单 @RamRaider 如果您查看 OP 的代码,他正在初始化与服务器的连接而不指定架构。他正在尝试列出他可以访问的服务器上的所有数据库。 正如@RiggsFolly 所说的学习 PDO,但是手册可能看起来有点压倒性,所以你可以this,它非常好,很快就会启动并运行。 【参考方案1】:

您可以使用输出缓冲函数来捕获输出并将其写入文件。

ob_flush();
ob_start();
while ($row = mysql_fetch_assoc($result)) 
    var_dump($row);

file_put_contents("dump.txt", ob_get_flush());

【讨论】:

var_dump 是供人类调试使用的,不是供程序解析的。 请看这里***.com/questions/38928140/… @Matth3w 建议的serialize($myobj) 是一个更好的解决方案 问题中的代码使用var_dump()。问题是关于如何将输出保存到文件中,而不是文件的格式。 $str = print_r($row, true); 为 true 时返回一个字符串,与 var_dump 相同【参考方案2】:

不要为此使用 var_dump,像这样使用序列化:

<?php
$fp = fopen('vardump.txt', 'w');
fwrite($fp, serialize($myobj));
fclose($fp);
?>

要恢复它,你可以使用 unserialize($filecontents);通过从文件中读回它。

【讨论】:

简单,好主意。还有print_r() 可以从任何变量创建一个字符串,这可能比序列化数据更容易阅读。【参考方案3】:
<?
$server = "127.0.0.1";
$username = "root";
$password = "1";

$link= connecttodb($server,$username,$password);

function connecttodb($server,$username,$password)


$rez=fopen("test.txt","ab");
   if ($link=mysql_connect ("$server","$username","$password",TRUE))
   
   fwrite($rez,"".$server." \r\n");
    echo "Connected successfully to >> " .$server ;

        $result = mysql_query('SHOW DATABASES');
echo "<br>";
while ($row = mysql_fetch_array($result))

fwrite($rez, $row['DatabaseName']); 

    


ini_set('max_execution_time', 10);
return $link;
    ?>

【讨论】:

【参考方案4】:

这应该可以工作

$file = 'somefile.txt';
file_put_contents($file, $some_var);

您可能需要先序列化变量以使其更具可读性。

但还有其他几种方法:http://php.net/manual/en/function.file-put-contents.php

【讨论】:

以上是关于将 var_dump 保存到文本文件中[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 vbscript 将变量保存到文本文件中并在重新打开程序时调用它们?

使用 C++ 将空格分隔值文本转换为 .csv 然后保存 [关闭]

VIM文本编辑工具

将文本框中的数据保存到文本文件中

Python - 从文本文件中读取逗号分隔值,然后将结果输出到文本文件[关闭]

如何将 RichTextBox 文本保存到文本资源文件?