Autor | Zpráva | ||
---|---|---|---|
Senky Profil |
#1 · Zasláno: 1. 8. 2009, 15:54:08
Zdravím.
Netuším ako na to, aj keď som veľa hľadal po internete. Ako by som mohlo rozdeliť sql príkaz, pričom neviem, koľko príkazov v sebe obsahuje (vždy je to INSERT...; INSERT...; ...). Má to totiž viac ako 1MB, a môj hosting má práve 1MB a navyšovať limit neplánuje (práve preto tu píšem). Jednoducho ja "ukradnem" sql príkaz z inej domény a potom sa ho snažím vložiť do databázy, avšak zastavím ma to kvôli limitu. Bolo by možné nejako sql príkaz rozdeliť (napríklad do array...) a potom ho postupne vkladať do databázy (cet for, alebo while ma napadá)? Ďakujem za každý nápad... |
||
Kajman_ Profil * |
#2 · Zasláno: 1. 8. 2009, 16:08:03
Nejjednodušší je mít hosting se ssh přístupem. Pak se tam jen nahraje a spustí přímo na serveru. Ale v php to také můžete rozkouskovat.
|
||
fuckin Profil |
#3 · Zasláno: 1. 8. 2009, 16:13:36
ano ssh je nejlepsi, ale bohuzel jen malo lidi s tim umi zachazet. U nasich hostingu je to temer tabu, proto hostuju v zahranici.
Omezeni 1mb? A na co se vztahuje? Na importovany soubor v phpmyadmin? Jaky mas proboha hosting? Me db maji i pres 50mb a ja to akorat rozkouskuju treba na 4 casti a dam to tam postupne. |
||
Senky Profil |
#4 · Zasláno: 1. 8. 2009, 16:43:00 · Upravil/a: Senky
Mám elbiahosting.sk. Ten 1mb je iba pre sql cez mysql_query, teda cez php skripty. Cez phpmyadmin toho môžem vložiť oveľa viac... Vedeli by ste mi teda poradiť, ako môžem php skriptom rozdeliť sql a spostupne ho vkladat?
|
||
fuckin Profil |
#5 · Zasláno: 1. 8. 2009, 16:48:24
a kdyz mas sql tak proc ho tam nedas pres phpmyadmin?
A jestli to delas pres php tak tam by preci zadne omezeni by nemelo byt. Mas tam prece vice mysql_query, takze to omezeni je blbost. Co ti to pise? |
||
Senky Profil |
#6 · Zasláno: 1. 8. 2009, 16:59:37
Tak ja to nechcem cez phpmyadmin, lebo to potrebujem stále každý deň aktualizovať automaticky.
A vyzerá to takto: INSERT INTO table VALUES (......); INSERT INTO table VALUES (......); INSERT INTO table VALUES (......); INSERT INTO table VALUES (......); mysql_query(INSERT INTO table VALUES (......)); mysql_query(INSERT INTO table VALUES (......)); mysql_query(INSERT INTO table VALUES (......)); mysql_query(INSERT INTO table VALUES (......)); Got a packet bigger than 'max_allowed_packet' bytes |
||
fuckin Profil |
#7 · Zasláno: 1. 8. 2009, 17:03:39
aha, no tak kazdy prikaz rozdel do pole tim strednikem explode(";",$dotaz); a pak v nejakem cyklu, treba for bude
mysql_query($dotaz[$i]); |
||
Senky Profil |
#8 · Zasláno: 1. 8. 2009, 17:19:47
Ďakujem za radu, pokúsim sa to nejako dať do kopy. Ak budú problémy, hádam nebude problém sa ozvať
Ďakujem ešte raz... |
||
Senky Profil |
#9 · Zasláno: 1. 8. 2009, 17:44:25 · Upravil/a: Senky
Mám ešte jeden problém. Neuvedomil som si, že v príkazoch sa môže tiež vyskytovať ;, čo mi rozdelilo príkaz na nechcené časti. Vyriešil som to tým, že som dal namiesto
explode(";",$dotaz); toto: explode(');', $dotaz); Avšak tým pádom potrebujem pridať do query ešte ). Urobil som to takto: mysql_query($explode[$i] . ')') or die(mysql_error()); Avšak hlási mi to túto chybu: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 Ďakujem... |
||
fuckin Profil |
#10 · Zasláno: 1. 8. 2009, 18:07:51
nechapu jake uvozovky. Vypis to pomoci print_r($obsah); a pak sem napis co ti to vyplivne. Az po zpracovani, pred zavolanim v mysql_query.
|
||
Senky Profil |
#11 · Zasláno: 1. 8. 2009, 20:02:43 · Upravil/a: Senky
To mi je jasné:
INSERT INTO `world_map` VALUES (72202,-289,310,1,81340,'Nová Dedina',2005,'Benchpress',68,'SPP',2) mysql_query($explode[$i] . ')') or die(mysql_error()); Celý príkaz vyzerá takto: $explode = explode(');', $prepare); for($i=0; $i <= sizeof($explode); ++$i) { mysql_query($explode[$i] . ')') or die(mysql_error()); } |
||
fuckin Profil |
#12 · Zasláno: 1. 8. 2009, 20:53:07
jestli vidim dobre tak v tom sql prikazu zavorka na konci JE.
Tak proc ji tam znovu pridavas? |
||
Senky Profil |
#13 · Zasláno: 1. 8. 2009, 21:07:03
Toto
INSERT INTO `world_map` VALUES (72202,-289,310,1,81340,'Nová Dedina',2005,'Benchpress',68,'SPP',2) print_r($explode[$i] . ')'); You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 print_r($explode[$i]); INSERT INTO `world_map ` VALUES (72202,-289,310,1,81340,'Nová Dedina',2005,'Benchpress',68,'SPP',2 |
||
fuckin Profil |
#14 · Zasláno: 1. 8. 2009, 21:25:16
to je divne, zkus tu zavorku pridat v normalnich uvozovkach, ne pomoci jednoduchych ' .
Jestli to nepomuze tak uz fakt nvm, nejak napevno tam hodit uvozovky mysql_query("${explode[$i]})");...tipuju ze to bude syntax error :D...nemam moznost to vyzkouset sorry :) |
||
Senky Profil |
#15 · Zasláno: 2. 8. 2009, 12:27:21
Bohužiaľ, ani jedna z možností nefunguje. Napadlo ma ešte zameniť najprv ); za niečo, čo sa v text určite nevyskytuje, potom sparsovať každé ";" na niečo iné (napríklad "<:>" ), potom zase ); naspäť a tak to uložiť do databázy. Následne vytiahnuť z databázy všetko, nájsť <:> a sparsovať to naspäť na ;. Uf... Uvidím ako to vyjde...
|
||
Senky Profil |
#16 · Zasláno: 2. 8. 2009, 12:33:51
Uf. A toto je zas čo? (odpoveď mysql_error()):
Query was empty INSERT INTO `world_map` VALUES (13146,-71,384,3,81369,'=pÁĽeňYica=',3680,'Zdurený Zajko',0,'',35) for($i=0; $i <= sizeof($explode); ++$i) { mysql_query($explode[$i]) or die(mysql_error()); } |
||
Mastodont Profil |
#17 · Zasláno: 2. 8. 2009, 12:46:26
for($i=0; $i < sizeof($explode); ++$i) |
||
Senky Profil |
#18 · Zasláno: 2. 8. 2009, 15:56:15
Ďakujem za radu, ale stále to vypisuje Query was empty.
Ja mám dnes taký nevydarený deň... už druhý skript, ktorý nemôžem rozbehať... |
||
Časová prodleva: 15 let
|
0