Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako da pokrenem sql falj nakon sto je ulodiran

[es] :: PHP :: kako da pokrenem sql falj nakon sto je ulodiran

[ Pregleda: 2755 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 01:25 - pre 211 meseci
Naslov je rekao sve.
Preko forme za upload uplodiram sql fajl, kako da se u isto vreme izvrsi. t.e. da se kreira tabela.
 
Odgovor na temu

w3bl0rd
Varaždin, Hrvatska

Član broj: 82659
Poruke: 380
*.cmu.carnet.hr.



+26 Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 09:54 - pre 211 meseci
možeš ili preko phpmyadmina ili sa mysqldump (ako server dopušta) ili da sam napišeš skriptu...
there's no place like 127.0.0.1
 
Odgovor na temu

Jezdimir Lončar
Aka Blazeme
PHP/jQuery Dev, BildStudio
Crna Gora / Pljevlja

Član broj: 74833
Poruke: 674
195.189.142.*

Jabber: jezdonet@gmail.com


+4 Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 09:57 - pre 211 meseci
Pa napraviš fajl run.php i staviš ga u action forme.
Konektuješ se na bazu i taj fajl otvoriš (fread i fopen) . Kao argument koristiš $_FILE array.
Imaš recimo:
$q = fread($fname);
mysql_query($q);
echo "Done!";
$fname ti je path do tog sql fajla.
Pozdrav,
Jezdo.
“I never think of the future - it comes soon enough.” - Albert Anštajn (Albert Einstein)
 
Odgovor na temu

Davor Grubelić
Davor Grubelić

Član broj: 46879
Poruke: 280
*.xnet.hr.

Jabber: nameless21@elitesecurity.org
ICQ: 341103380


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 10:02 - pre 211 meseci
još jedan način:

Code:

<?php

mysql_connect('localhost', 'nameless', '5xgdvz298');
mysql_select_db('test');

$upload_dir = 'upload/';
$upload_file = 'file.sql';

/**
 * nakon uploada...
 * neka file.sql sadrži samo jednu naredbu ...."SELECT * FROM tablica;"
 */

if (file_exists($upload_dir . $upload_file)) {
    $sql = join('', file($upload_dir . $upload_file));
    $tmp_res = mysql_query($sql);
    //$result = mysql_fetch_row($tmp_res);
    /**
     * sad dalje radiš sa razultatima što god hoćeš.
     */
}

?>

 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 11:54 - pre 211 meseci
Sve je u redu ili nikako da mi usje
$tmp_res = mysql_query($sql);
Ovoako izgleda sql fajl
Code:

CREATE TABLE `sport` (
  `sport_id` smallint(5) unsigned NOT NULL default '0',
  `naziv` varchar(50) default NULL,
  `export_id` smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (`sport_id`),
  KEY `ID` (`sport_id`),
  KEY `Naziv` (`naziv`)
) ENGINE=MyISAM CHARACTER SET utf8;

SET SQL_MODE = 'MYSQL323';

INSERT INTO `sport` VALUES("10", "Fudbal", "1");
INSERT INTO `sport` VALUES("20", "Košarka", "2");
INSERT INTO `sport` VALUES("30", "Tenis", "3");
INSERT INTO `sport` VALUES("40", "Formula 1", "4");
INSERT INTO `sport` VALUES("45", "Moto trki", "4");
INSERT INTO `sport` VALUES("50", "Golovi vo liga", "5");
INSERT INTO `sport` VALUES("55", "Super Tip", "11");
INSERT INTO `sport` VALUES("60", "Hokej", "6");
INSERT INTO `sport` VALUES("70", "Rakomet", "7");
INSERT INTO `sport` VALUES("80", "Američki fudbal", "8");
INSERT INTO `sport` VALUES("90", "Odbojka", "3");
INSERT INTO `sport` VALUES("100", "Vaterpolo", "7");
INSERT INTO `sport` VALUES("105", "Ski sportovi", "14");
INSERT INTO `sport` VALUES("110", "Atletika", "15");
INSERT INTO `sport` VALUES("115", "Boks", "16");
INSERT INTO `sport` VALUES("120", "Ragbi", "8");
INSERT INTO `sport` VALUES("130", "Politika", "12");
INSERT INTO `sport` VALUES("140", "Zabava", "13");

Da napomenem da preko phpmyadmina sve je Ok.
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 12:52 - pre 211 meseci
Na nekom MySQL serverima je zabranjeno izvršavanje više instrukcija odjednom.

Čak i sam phpMyAdmin kad mu "uvoziš" bekap, to isecka na pojedinačne instrukcije pa ih onda redom izvršava.
To možeš videti po tome što dodaje komentare na kraju svake od njih posle izvršavanja.

Evo moje funkcije koju koristim za to razdvajanje:
Code:

function SqlParser($filename) {
  // razdvaja sql komande iz datoteke u array pojedinačnih instrukcija
  $sql= file($filename);
  $out= array();
  $p= 0;
  $size= count($sql);
  $Terms= array('`',"'",'"');
  while ($p<$size) {
      $line= $sql[$p];
      $tline= trim($line);
      if((!$tline)or($tline[0]=='-')) {$p++; continue;} // prazan red ili komentar
      // ako je stig'o dovde onda počinje neka instrukcija
      $instr= '';
    $InString= false;
      do {
        $instr .= $line;
        // zavrsava li se red usred nekog stringa (enter usred stringa)
        for($x=0;$x<strlen($tline);$x++) {
          if(($InString)and($tline[$x]==$Term)) // izlazimo iz stringa
            {$InString=false; continue;}
          if((!$InString)and(in_array($tline[$x],$Terms))) // ulazimo u string
            {$Term=$tline[$x]; $InString=true; continue;} 
        }
        $FoundSemicolon= (!$InString) && (substr($tline,-1)==';');
         $p++;
         if($p>=$size) break;
         $line= $sql[$p];
        $tline= trim($line);
      } while (($InString) || (!$FoundSemicolon));
      $out[]= $instr;    
  }
  return $out;
}

Posle u foreach petlji izvršiš svaki element vraćenog niza.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 13:55 - pre 211 meseci
Broblem resen sa function SqlParser.
Hvala puno.
 
Odgovor na temu

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 246
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 20:02 - pre 211 meseci
E sada opet problem.
Sql fajl koji dobijam je iz win2k u ascii encoding.
Kako da ga konvertiram u utf-8 i pri tom da otstranim bom.
Dali neko ima gotov parser koji ce to odraditi?
 
Odgovor na temu

bitecode
Semso Bonaparte

Član broj: 125123
Poruke: 5
85.158.38.*



Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 21:15 - pre 211 meseci
Evo funkcije koja prevodi iz string iz "našeg" u UTF-8.
Code:

iconv("ISO-8859-2", "UTF-8", $string);

Možes jednostavnom petljom proći kroz query-file da ga "očistiš". Također možeš taj file čitav učitati u jedan string pa ga konvertovati..kako ti volja. Neki će vjerovatno predložiti utf8_encode() i utf8_decode(), ali nažalost ta funkcija ne radi sa našim hiroglifima :) Koristi ISO-8859-1 charset.

cheerz
 
Odgovor na temu

[es] :: PHP :: kako da pokrenem sql falj nakon sto je ulodiran

[ Pregleda: 2755 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.