Hi, ich hoffe das ich niemanden nerfe, wenn ich so viele Treats eröffne, aber langsam komme ich echt an meine Grezen.
Also ich habe passent zu dem SQL Backupscript, welches ich hier schon einmal gepostet habe ein script geschrieben, welches die Backups wieder in die Datenbank einspielt. Wie Phpmyadmin und mein Backupscript trennt dieses die einzelnen SQL einträge mit einem ;
[php]
//$data sind die ausgelesenen daten aus der Backupdatei
$data = explode(„;“,$data);
$innertext = $x;
$Y = 0;
$error = „“;
foreach ($data as $sql) {
$Y++;
$kontrolle = eregi_replace(’ ', ‚‘, $sql );
if($kontrolle != „“){$write = mysql_query($sql);$error = „$error“.mysql_error();}
}
[/php]Wenn jetzt aber jemand z.B. im Gästebuch das zeichen ; benutzt fliegt mir das Script um die Ohren und meldet nur noch Fehlermeldungen.
Also darf das Script innerhalb der () zeichen nicht exploden^^
mysql_real_escape_string verändert doch nichts an einem Semikolon
@topic: Nimm statt einem Semikolon einfach ein „—“ zur unterteilung. Damit das nicht im Text vorkommt, benutzt du str_replace und änderst jedes „—“ im Text durch ein „—“ bevor du die Texte in die DB einträgst.
Die Idee ist nicht schlecht, doch so kann ich keine Backups von Phpmyadmin einspielen und später söllte man auch (wie bei phpmyadmin) das Trennzeichen zwischen den einzelnen Sqltags selber definieren können.
Am allerbesten währe es, wenn man die explodefunktion auf einen bestimmten Abschnitt reduzieren kann.
Funktion vielleicht selberschreiben? Mit einer forschleife und dann einem teil, welches überprüft ob das ; in einem () Bereich steht? Und danach einfach die äuseren ; in arrays unterteilt.