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: 942 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 245
62.162.91.*

Sajt: ohridnews.com


Profil

icon kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 01:25

Naslov je rekao sve.
Preko forme za upload uplodiram sql fajl, kako da se u isto vreme izvrsi. t.e. da se kreira tabela.
12.12.2006. u 01:25 

w3bl0rd

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



Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 09:54
možeš ili preko phpmyadmina ili sa mysqldump (ako server dopušta) ili da sam napišeš skriptu...
internet is my kingdom but google is my god
12.12.2006. u 09:54 

Neohacker
Jezdimir Lončar
Crna Gora / Pljevlja

Član broj: 74833
Poruke: 538
195.189.142.*

Jabber: neohacker@elitesecurity.org
ICQ: 354779968
Sajt: www.jezdo.net


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 09:57
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)
PHP Diskusije, tutoriali i skripte
“Dobri programeri pišu kvalitetan kod, najbolji ne pišu, koriste skripte ovih prvih.” - mVeliki

2.1.2008. sam cijelu noć proveo kodirajuci. : (
3.1.2008. opet sam cijelu noć proveo kodirajuci. : (
12.12.2006. u 09:57 

Davor Grubelić
Davor Grubelić

Član broj: 46879
Poruke: 279
*.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
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š.
     */
}

?>

12.12.2006. u 10:02 

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 245
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 11:54
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`)
) TYPE=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.
12.12.2006. u 11:54 

mVeliki
Miroslav Ćurčić
Novi Sad

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



Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 12:52
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."
12.12.2006. u 12:52 

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 245
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 13:55
Broblem resen sa function SqlParser.
Hvala puno.
12.12.2006. u 13:55 

glavince
Ohrid/Macedonia

Član broj: 66412
Poruke: 245
62.162.91.*

Sajt: ohridnews.com


Profil

icon Re: kako da pokrenem sql falj nakon sto je ulodiran12.12.2006. u 20:02
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?
12.12.2006. u 20:02 

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
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
12.12.2006. u 21:15 

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

[ Pregleda: 942 | Odgovora: 8 ]

Postavi temu Odgovori

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