Wert aus MSQL Abfrage in CSV Datei schreiben

gulo92

Mitglied
Hallo,

ich habe folgenden Code

PHP:
$abfrage = "SELECT * FROM `xyz` WHERE `xyz` = 1";
	$ergebnis = mysql_query($abfrage);
		
			while($row = mysql_fetch_object($ergebnis))
			{
			$email = $row->email."\r\n";
		        $daten = array($email);
		        $fp = fopen('flie.csv', 'a');
		        fputcsv($fp, $daten);
		        fclose($fp);
		        }

Ich bin schon froh, dass er mir die Werte untereinander und nicht hintereinander ausgibt. Allerdings habe ich bei der Ausgabe immer Anführungszeichen in der CSV Datei nach dem Schema

"Wert1
""Wert2
""Wert3
""Wert4
"

Wie bekomme ich das weg? :D Danke!
 
Hi,

du hängst an die Mailadresse einen Zeilenumbruch dran.
PHP:
$email = $row->email."\r\n";

Streich den raus :)

Übrigens, dein Code ist ziemlich unperformant. Du öffnest die Datei für jeden Eintrag neu, schreibst eine EMail rein, und schließt sie danach wieder. Würde das befüllen der Datei ausserhalb der Schleife schreiben.

In etwa so:
PHP:
$abfrage = "SELECT * FROM `xyz` WHERE `xyz` = 1";
$ergebnis = mysql_query($abfrage);

$daten = array();
while($row = mysql_fetch_object($ergebnis))
{
	$daten[] = $row->email;
}

$fp = fopen('file.csv', 'a');
if($fp !== FALSE)
{
	fputcsv($fp, $daten);
	fclose($fp);
}

Grüße,
BK
 
Zuletzt bearbeitet:
Dein Code ist ja ganz cool :) aber er gibt die Daten hintereinander mit einem Komma aus und nicht untereinander ohne Komma. Wie geht denn letzteres? :)

Danke!
 
Hi,

da brauchst du dann ein zwei-dimensionales Array:
PHP:
while($row = mysql_fetch_object($ergebnis))
{
    $daten[] = array($row->email);
}

Grüße,
BK
 
Hi,

oh, da hätt ich mir die fputcsv() doch genauer anschauen sollen, so einfach gehts leider dann doch nicht.

PHP:
// sql abfeuern
$abfrage = "SELECT * FROM `xyz` WHERE `xyz` = 1";
$ergebnis = mysql_query($abfrage);

// ergebnis holen
$daten = array();
while($row = mysql_fetch_object($ergebnis))
{
    $daten[] = $row->email;
}

// aufräumen #1
mysql_free_result($ergebnis);

// daten schreiben
$fp = fopen('file.csv', 'a');
if($fp !== FALSE)
{
    foreach($daten as $zeile)
    {
        fputcsv($fp, $zeile);
    }
    fclose($fp);
}

// aufräumen #2
unset($daten);

Grüße,
BK
 

Neue Beiträge

Zurück