![]() |
Re: Php: Datenbank-Backup...
genial...funktioniert :)
gibt es nun noch eine möglichkeit das a) wieder automatisch einzulesen und b) das ganze nicht einfach auszugeben sondern als Datei runterzuladen? Edit: wäre folgendes denkbar?
Code:
for ($i=0;$i<count($zeilen);$i++) {
if ($zeilen[$i][1]!="-") { if ($zeilen[$i][strlen($zeilen[$i])]==",") { $akt = $akt.$zeilen[$i]; } else if ($zeilen[$i][strlen($zeilen[$i])]==";") { $akt = $akt.$zeilen[$i]; mysql_query($akt); $akt = ""; } } } |
Re: Php: Datenbank-Backup...
Zu (b):
Wenn du diese Zeile einbaust, dann bietet dir der Browser das Abspeichern an.
Code:
Ggf. solltest du auch noch
header('Content-Disposition: attachment; filename="sqlbackup.txt"';
Code:
aufrufen, dann wird's komprimiert (nicht die Datei sondern die Übertragung).
ob_start("ob_gz_handler");
Zu (a): Das ist nicht ganz trivial, weil ja in den Werten auch diese Zeichen vorkommen können, auf die du prüfst. Ich schreib gerade mal was ... |
Re: Php: Datenbank-Backup...
Zitat:
übrig bleiben dann nur noch 2 mögliche Zeilenarten. die mit Komma am Ende, die mit Semikolon am ende, und die leeren. also eigentlich sollte das ja klappen...oder verhau ich mich da gerade? |
Re: Php: Datenbank-Backup...
Liste der Anhänge anzeigen (Anzahl: 1)
[Unten folgt ein //NACHTRAG]
Ich denke, es würde gehen. Diese Funktion hier ist aber allgemeiner:
Code:
//NACHTRAG:
function SplitSqlStatements(&$fulltext)
{ $states = array( // Normal (top-level) 0 => array( "#" => array( 's' => 1, 'a' => 0 ), "-" => array( 's' => 2, 'a' => 0 ), "/" => array( 's' => 4, 'a' => 0 ), "\n" => array( 's' => 0, 'a' => 1 ), "'" => array( 's' => 7, 'a' => 1 ), '"' => array( 's' => 9, 'a' => 1 ), '`' => array( 's' => 11, 'a' => 1 ), ';' => array( 's' => -1, 'a' => 0 ), 999 => array( 's' => 0, 'a' => 1 ), ), // Kommentar bis Zeilenende 1 => array( "\n" => array( 's' => 0, 'a' => 0 ), 999 => array( 's' => 1, 'a' => 0 ), ), // Minuszeichen gesehen 2 => array( "-" => array( 's' => 3, 'a' => 0 ), 999 => array( 's' => 0, 'a' => 1, 'i' => "-" ), ), // Zweites Minuszeichen gesehen 3 => array( " " => array( 's' => 1, 'a' => 0 ), 999 => array( 's' => 0, 'a' => 2, 'i' => "--" ), ), // Schrägstrich gesehen 4 => array( "*" => array( 's' => 5, 'a' => 0 ), 999 => array( 's' => 0, 'a' => 2, 'i' => "/" ), ), // C-style Kommentar 5 => array( "*" => array( 's' => 6, 'a' => 0 ), 999 => array( 's' => 5, 'a' => 0 ), ), // Stern gesehen im C-style Kommentar 6 => array( "/" => array( 's' => 0, 'a' => 0 ), 999 => array( 's' => 5, 'a' => 0 ), ), // Single quote 7 => array( "'" => array( 's' => 0, 'a' => 1 ), "\\" => array( 's' => 8, 'a' => 1 ), 999 => array( 's' => 7, 'a' => 1 ), ), // Backslash im single quote 8 => array( 999 => array( 's' => 7, 'a' => 1 ), ), // Double quote 9 => array( '"' => array( 's' => 0, 'a' => 1 ), "\\" => array( 's' => 10, 'a' => 1 ), 999 => array( 's' => 9, 'a' => 1 ), ), // Backslash im single quote 10 => array( 999 => array( 's' => 9, 'a' => 1 ), ), // Double quote 11 => array( '`' => array( 's' => 0, 'a' => 1 ), "\\" => array( 's' => 12, 'a' => 1 ), 999 => array( 's' => 11, 'a' => 1 ), ), // Backslash im backquote 12 => array( 999 => array( 's' => 11, 'a' => 1 ), ), ); $state = 0; $result = array(); $stmt = ""; $len = strlen($fulltext); for ($k = 0; $k < $len; $k++) { $ch = $fulltext{$k}; $ix = isset($states[$state][$ch]) ? $ch : 999; if (!empty($states[$state][$ix]['i'])) $stmt .= $states[$state][$ix]['i']; if (!empty($states[$state][$ix]['a'])) if (!empty($stmt) || ($ch != ' ' && $ch != "\n")) $stmt .= $ch; $state = $states[$state][$ix]['s']; if ($state == -1) { if (!empty($stmt)) $result[] = $stmt; $stmt = ""; $state = 0; } } if (!empty($stmt)) $result[] = $stmt; return $result; } Hab's die Datei von oben noch mal ein bisschen angepasst und angehängt. Die Klasse ist jetzt um die Methode "Import" erweitert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz