79 Stimmen

Laden von .sql-Dateien aus PHP heraus

Ich erstelle ein Installationsskript für eine Anwendung, die ich gerade entwickle, und muss Datenbanken dynamisch aus PHP heraus erstellen. Ich habe es geschafft, die Datenbank zu erstellen, aber jetzt muss ich mehrere .sql-Dateien laden. Ich hatte geplant, die Datei zu öffnen und mysql_query eine Zeile nach der anderen abzufragen - bis ich mir die Schemadateien ansah und feststellte, dass sie nicht nur eine Abfrage pro Zeile sind.

Wie lade ich also eine SQL-Datei aus PHP heraus (wie phpMyAdmin es mit seinem Import-Befehl tut)?

0voto

Vijin Paulraj Punkte 4282

Ich hoffe, dass der folgende Code Ihr Problem ziemlich gut lösen wird.

//Empty all tables' contents

$result_t = mysql_query("SHOW TABLES");
while($row = mysql_fetch_assoc($result_t))
{
mysql_query("TRUNCATE " . $row['Tables_in_' . $mysql_database]);
}
// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
// Skip it if it's a comment
if (substr($line, 0, 2) == '--' || $line == '')
    continue;

// Add this line to the current segment
$templine .= $line;
// If it has a semicolon at the end, it's the end of the query
if (substr(trim($line), -1, 1) == ';')
{
    // Perform the query
    mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
    // Reset temp variable to empty
    $templine = '';
}
}

?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X