• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP-Script installieren

Status
Für weitere Antworten geschlossen.

marlin-b

Neues Mitglied
Hallo Leutz,
ich habe einen PHP-Script selber geschrieben, und biete diesen auch zum Download an. Sehr viele User haben jedoch Probleme damit, die *.sql mit phpMyAdmin einzuspielen.

Jetzt stellt sich mir die frage, wie man (ohne großen Aufwand) einen Installer schreiben könnte, der diese *.sql Datei in die Datenbank einspielt.

mfg. Marlin
 
Warum packst du die jeweiligen mysql-querys, die für die Erstellung der Tabellen zuständig sind, nicht einfach in eine PHP?

install.php
PHP:
<?php
include("config.php");

$sql = "CREATE TABLE ...";

if (mysql_query($sql)) {
  echo "Tabellen erfolgreich erstellt!";
} else {
  echo "Fehler: ".mysql_error());
}

?>

MfG Icy
 
Ich dachte eigentlich, dass man es anders machen könnte. Das nur die *.sql eingelesen werden muss, dann könnte ich es für meine anderen scripts auch verwenden :-)
 
lese die datei mit PHP: file - Manual ein.
Dann prüfst du erstmal jede Zeile auf ein -- am anfang. Diese Zeilen schneidest du 'raus.

Dann implode auf das array das du einen string bekommst und wieder explode an den ;
Jetzt für jeden Eintrag im Array ein Query machen.

PHP:
$sqlfile = file("my.sql");
foreach($sqlfile as $k=>$v) {
  if (preg_match("~^--.+$~", $v))
    unset($sqlfile[$k]);
}
$commands = explode(";", implode("", $sqlfile));
foreach($commands as $command) {
  mysql_query($command) or
    trigger_error("[".mysql_errno()."] ".mysql_error(), E_USER_WARNING);
}
echo "done....";
 
Zuletzt bearbeitet:
ich würde noch nen trim machen damit du auch wirklich sicher gehen kannst, das du keine leeren querys abschickst ^^
 
nagut dann so ;)

PHP:
$sqlfile = array_map("trim", file("my.sql"));
foreach($sqlfile as $k=>$v) {
  if (preg_match("~^--.+$~", $v) or $v == "")
    unset($sqlfile[$k]);
}
$commands = explode(";", implode("", $sqlfile));
foreach($commands as $command) {
  mysql_query($command) or
    trigger_error("[".mysql_errno()."] ".mysql_error(), E_USER_WARNING);
}
echo "done....";
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben