So erstellen Sie eine temporäre Tabelle in MySQL Ausgabe Tabelle, die Daten als CSV-Datei?
Ich habe ein script zum erstellen einer CSV-Datei aus einer Datenbank-Tabelle, welche gut funktioniert, außer dass es gibt alle Daten in der Tabelle, und ich brauche es für die Ausgabe von Daten nur für den aktuellen angemeldeten Benutzer. Die app, die ich entwickle ist für die Nutzer zu speichern, Listen der Bücher, die Sie gelesen haben, Lesen wollen, etc., und ich möchte in der Lage sein, Ihnen zu ermöglichen, laden Sie eine Liste Ihrer Bücher können Sie in Excel importieren zum Beispiel. (Würde eine CSV-Datei werden die beste option dafür gegeben, dass es auch OpenOffice etc. sowie MS Excel?)
Ich herausgefunden, dass ich brauchte, um eine temporäre Tabelle eine select-Abfrage zu wählen Sie nur die Datensätze, die Zugehörigkeit zu den aktuellen angemeldeten Benutzer. Ich kann auf die Daten für den aktuellen Benutzer mit WHERE username='$session->username'
.
Dachte ich, es wäre so einfach wie das erstellen der temporären Tabelle, bevor ich versuche, die Abfragen ausführen, die Ausgabe der Daten für die Verwendung in der CSV-Datei, und löschen Sie dann die Tabelle danach, aber ich habe versucht, die CSV-Erstellung-code wieder mit der temporären Tabelle erstellt, bevor die CSV-Zeug, und wieder die CSV-Datei erzeugt enthält alle Einträge für alle Benutzer.
Gibt es eine Konfigurationsdatei, wird die Datenbank-Verbindung, Eigenschaften, aber auch die Tabelle zum erstellen der Datei verwendet, da die variable $table
, und ich habe eingestellt, das der name der temporären Tabelle, die ich versuche zu schaffen.
Dies ist der code den ich habe:
<?
$link = mysql_connect($host, $user, $pass) or die("Cannot connect to the database." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
$temp = mysql_query("CREATE TEMPORARY TABLE books_temp SELECT * FROM books WHERE username='$session->username'");
$tempresult = mysql_query($temp);
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("d-m-Y") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
$query = 'DROP TABLE books_temp';
$result = mysql_query($query);
exit;
?>
Funktioniert es tadellos die Ausgabe aller Daten, aber immer noch gibt die Daten wenn ich versuche, es mit der temporären Tabelle. Übrigens, ich habe versucht, entfernen Sie die Anweisung zum löschen der temporären Tabelle aus dem Ende als gut, und dass macht keinen Unterschied. Auch, Check-in PhpMyAdmin, es scheint nicht, als ob die temporäre Tabelle erstellt wird. Ich bin offensichtlich etwas falsch hier, oder etwas fehlt, aber ich habe keine Ahnung, was.
- Export aus MySql in CSV per PHP wurde hier beantwortet: stackoverflow.com/questions/125113/...
- wählen Sie "ANSICHT" anstelle von TEMPORÄREN TABELLE
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut nach ein bisschen eine Pause von dieser habe ich wieder kommen, um es, und wie Sie Jungs gesagt, ich wollte eigentlich nicht benötigen eine temporäre Tabelle.
Der Vollständigkeit halber, und falls jemand auf das gleiche problem, das war die eventuelle Lösung dafür.
Mit der when-Klausel an die SELECT-Abfrage das Skript funktioniert, habe ich schließlich entdeckt, aber ich war immer noch nicht immer alle Daten durch (nur die Spalte "Namen"). Endlich fand ich den Grund war ich nicht immer alle Daten war da, obwohl
'$session->username'
funktioniert in meiner PHP-Seiten, um Zugriff auf den Namen des aktuellen Benutzers, das Skript, die nur die Verknüpfung zu der Seite, keine Möglichkeit hat, Zugriff auf diese session-info.Schließlich arbeitete ich heraus, dass ich brauchte, um in den zusätzlichen Variablen
$username
und erhalten den Wert für die aus einem query-string der URL (nicht ganz sicher, wie ich war, vorausgesetzt, die Sitzung info bekommen würde, um die Skript - Kopf war nicht in Gang!). Es war, weil das Skript konnte nicht auf'$session->username'
Sie, dass das Skript nicht funktioniert.Eher als Verknüpfung zu dem script mit:
Habe ich diese statt (nach dem deklarieren der Variablen auf der Seite):
und:
Dann alles, was ich zu tun hatte, war, fügen Sie die $variable "username" in die top der script und ändern Sie die SELECT-Abfrage mit Variablen.
Zumindest funktioniert es jetzt! (Ich habe versucht, einige der Vorschläge auf die andere Diskussion, aber konnte nicht zur Arbeit - entweder bekam ich nur die header-Zeilen oder eine Last von Fehlern).
$user
variable in der URL.Habe ich einen poor man ' s Ansatz ist, um eine CSV-Datei die Spalte Typen sind einfach. Es könnte getan werden, durch die CSV-Speicher-Engine.
Wenn dieser Schritt geschafft ist, wird die Datei /var/lib/mysql/mydb/books_csv.CSV existiert.
Können Sie die Datei öffnen, wie Sie es wünschen. BTW, alle Felder, die in doppelten Anführungszeichen.
Probieren Sie es aus !!!