PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP und MySQL Queries


Gast
2008-10-08, 12:03:13
Hi, ich habe folgendes Problem:

und zwar hab ich eine Datei in der verschiedene SQL Tabellen angelegt und mit Daten gefüllt werden, also einfach eine Liste mit Queries sozusagen (welche teilweise aber auch mehrzeilig sind).
Diese möchte ich nun von meinem PHP Script einlesen und in meine SQL Datenbank eintragen lassen.

Hab mir also gedacht:
$queryFile = 'queries.sql';
$fp = fopen($queryFile, 'r');
$query = fread($fp, filesize($queryFile));
fclose($fp);

mysql_query($query);
Solange in der Datei nun nur ein Query steht, funktioniert das auch. Bei mehreren aber nicht mehr.
Wie mach ich das also?

Hilfe bitte :)

Coda
2008-10-08, 12:27:54
$file = 'blub.sql';
$fh = fopen($file,'r+');
$content = fread($fh, filesize($file));

$statements = preg_split("/;/", $content);
array_pop($statements);

foreach($statements as $statement) {
mysql_query($statement);
}

Gast
2008-10-08, 12:53:00
Interessant. Dass es auf soetwas hinauslaufen wird, hab ich mir schon gedacht, allerdings hätt ich nicht gedacht, dass das so einfach zu machen ist, naja, da fehlt mir wohl einfach noch die Erfahrung mit PHP (preg_split z.B. noch nie benutzt).

Danke jedenfalls :)

rotalever
2008-10-08, 13:03:23
Für das Lesen einer Datei geht auch file_get_contents() wesentlich einfacher.
=> http://us2.php.net/file_get_contents

Warum preg_split? Würde nicht auch ein explode() reichen? Man muss aber wohl beachten, dass soetwas auch geteilt würde:

SELECT * FROM tabelle WHERE x='bla bla;blabla';

Gast
2008-10-13, 12:36:04
explode() würde natürlich auch gehen. aber warum sollte man eine dose mit einem buschmesser aufmachen?

rotalever
2008-10-13, 17:13:55
explode() würde natürlich auch gehen. aber warum sollte man eine dose mit einem buschmesser aufmachen?
:confused: Ich hätte jetzt gedacht, dass explode schneller ist. Genauso wie str_replace schneller als die REGEX-Variante ist.