Avatar billede Slettet bruger
28. august 2004 - 17:29 Der er 15 kommentarer og
2 løsninger

At indlæse .sql fil og eksekvere den via PHP

Hej!

Jeg har en lang sql fil i stil med det her:

# MySQL-Front Dump 2.5
#
# Host: localhost  Database: love
# --------------------------------------------------------
# Server version 4.0.20a-nt


#
# Table structure for table 'demo_brugere'
#

DROP TABLE IF EXISTS demo_brugere;
CREATE TABLE demo_brugere (
  id int(10) unsigned NOT NULL auto_increment,
  brugernavn varchar(100) binary default NULL,
  adgangskode varchar(50) binary default NULL,
  navn varchar(100) default NULL,
  adresse varchar(100) default NULL,
  postnummer int(10) default NULL,
  bynavn varchar(100) default NULL,
  email varchar(100) default NULL,
  niveau tinyint(3) unsigned default '0',
  aktiv_fra datetime default NULL,
  aktiv_til datetime default NULL,
  sidste_login datetime default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;



#
# Table structure for table 'demo_brugere_grupper'
#

DROP TABLE IF EXISTS demo_brugere_grupper;
CREATE TABLE demo_brugere_grupper (
  id int(10) unsigned NOT NULL auto_increment,
  gruppenavn varchar(100) default NULL,
  beskrivelse text,
  aktiv_fra datetime default NULL,
  aktiv_til datetime default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;


Hvordan indlæser jeg denne med PHP, og kører det som et query i MySQL?

Filen hedder sql_setup.sql
Avatar billede dennismp Nybegynder
28. august 2004 - 17:38 #1
Har du ikke PHPMyAdmin ? Den kan klare det for dig.
Avatar billede Slettet bruger
28. august 2004 - 17:56 #2
Ja,men det her skal ske via PHP (runtime)
Avatar billede dennismp Nybegynder
28. august 2004 - 18:02 #3
Jeg ville nok gå ind og kigge på hvordan de har gjort det. PHPMyAdmin bruger en funktion: PMA_splitSqlFile() som splitter en række statements som dit op i enkelt-sql statements.

du skal se i:
/libraries/read_dump.lib.php

er ligeved at tro at du kan genbruge den uden at rette i den.
Avatar billede hmortensen Nybegynder
28. august 2004 - 18:19 #4
Det her skulle gerne kunne bruges:

$sql = file_get_contents("sql_setup.sql");
$sqlarr = explode(";", $sql);

foreach ($sqlarr as $var) {
    mysql_query($var);
}
Avatar billede dennismp Nybegynder
28. august 2004 - 18:23 #5
Den er ikke god, for den vil fejle hvis du har en tekst med semikolon i.
Avatar billede hmortensen Nybegynder
28. august 2004 - 18:26 #6
Ja, det har du faktisk ret i...
Avatar billede Slettet bruger
28. august 2004 - 19:08 #7
Nogen der har en ide hvordan jeg bruger PMA_split osv osv?
Avatar billede coderdk Praktikant
28. august 2004 - 19:10 #8
Download phpMyAdmin og kig på read_dump.php
Avatar billede Slettet bruger
28. august 2004 - 19:31 #9
$sql_query = file_get_contents('sql_setup.sql');
$pieces = array();
PMA_splitSqlFile($pieces, $sql_query, 40);
$pieces_count = count($pieces);
if ($pieces_count > 1) {
$is_multiple = TRUE;
}
$i = 0;
foreach($pieces AS $val => $key) {
$result = mysql_query($pieces[$i]['query']) or die(mysql_error());
$i++;
}

er svaret :)

Tak for tippet med PHPMyAdmin
Avatar billede coderdk Praktikant
28. august 2004 - 19:40 #10
Hvad er det for en funktion, PMA_splitSqlFile ?
Avatar billede coderdk Praktikant
28. august 2004 - 19:42 #11
heheh nevermind ;)
Avatar billede Slettet bruger
28. august 2004 - 19:43 #12
En funktion der deler en typisk dump fil op så du kan køre alle queries.
Avatar billede coderdk Praktikant
28. august 2004 - 20:12 #13
Yep, fra phpMyAdmin (derfor PMA), som bruges i (er defineret i) read_dump.php ;)
Avatar billede Slettet bruger
28. august 2004 - 20:30 #14
Kast et svar (Dennismp og coderdk)

;)
Avatar billede dennismp Nybegynder
28. august 2004 - 20:35 #15
ok
Avatar billede coderdk Praktikant
29. august 2004 - 00:18 #16
hehe roger that
Avatar billede Slettet bruger
29. august 2004 - 00:24 #17
Tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester