0

この関数は、データベースからレコードをフェッチします。今、私はそれらをファイルに書きたいと思っています。私を助けてください。

function selectcsv($classname)
    {
        echo $sql = "SELECT * FROM tblstuden WHERE classname = $classname;"; 
        $obj_db = new DB();
        $obj_db->query($sql);

        while($row = $obj_db->rsset()){
        $this->_id($row[id]);
        $this->_studentname($row[studentname]);
        $this->_rollnumber($row[rollnumber]);
        $this->_classname($row[classname]);

        $out = $out . $row[studentname] . " , ". $row[rollnumber] . "\n";
        }

        $obj_db->db_close();

上記の部分が実行されています

$myFile = "write.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "write::";
fwrite($fh, $stringData);
$stringData = $_POST[read];
fwrite($fh, $stringData);
fclose($fh);
4

4 に答える 4

0

メソッドにパラメーターを追加し、出力バッファリングを使用してファイルに保存するコンテンツを作成することができます。使用すると、出力されませんが、メソッドから戻りたいob_clean();場合は引き続き使用できます。$out

<?php 
function selectcsv($classname,$writeFile=true)
{
    echo $sql = "SELECT * FROM tblstuden WHERE classname = $classname;";
    $obj_db = new DB();
    $obj_db->query($sql);

    if($writeFile==true){ob_start();}

    while($row = $obj_db->rsset()){
        $this->_id($row['id']);
        $this->_studentname($row['studentname']);
        $this->_rollnumber($row['rollnumber']);
        $this->_classname($row['classname']);
        if($writeFile==true){
            echo $row['studentname'] . " , ". $row['rollnumber'] . PHP_EOL;
        }
        $out .= $row['studentname'] . " , ". $row['rollnumber'] . PHP_EOL;
    }

    if($writeFile==true){
       $tofile = ob_get_contents();
       ob_clean();
       file_put_contents($classname.'.csv',$tofile);
    }

    return $out;
    $obj_db->db_close();
}
?>
于 2012-06-05T06:48:17.063 に答える
0
$myFile = "write.txt";
$fh = fopen($myFile, 'w') or die("can't open file");

$stringData = "write::";
fwrite($fh, $stringData);

$stringData = $_POST['read'];
if(isempty($stringData){echo 'Nothing to write';}
else
fwrite($fh, $stringData);

fclose($fh);

配列インデックス文字列は引用符で囲む必要があると思います。また、POST配列に有効なデータが含まれているかどうかを確認できます

于 2012-06-05T06:48:41.600 に答える
0

ここでこれを試して、

header("Content-type: application/octet-stream");
header("Content-disposition:attachment; filename=".$myFile);

echo $out;

あなたの場合:

$myFile = "write.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $out;
fwrite($fh, $stringData);
$stringData = $_POST['read'];
fwrite($fh, $stringData);
fclose($fh);
于 2012-06-05T06:32:36.357 に答える