[ milost @ 18.02.2002. 10:12 ] @
Jel uspeo neko da posalje vise upita zaredom MySQL serveru iz PHP-a?

Naravno, ti upiti ne vracaju nikakve vrednosti, nego rade nekakve update inserte i sl.
Ja sam probao nekoliko varijanti tipa:

$sql = "sql_upit_1; sql_upit_2";
mysql_query($sql) or die("bla bla");

ali mi nije uspelo. Buni se kada naidje na znak ';' ali nemam ideju sa cim da napravim kraj jednog upita...

Neko resenje ?

Poz.
[ stanoje @ 18.02.2002. 12:10 ] @
Probaj ovo:
$sql1="INSERT ...";
res1=mysql_query($sql1);

$sql2="UPDATE ...";
$res2=mysql_query($sql2);
Znam, pomislices da sam izmislio toplu vodu, ali mozda
su tebi ipak samo sudovi masni pa je to bas ono sto ti treba :)
Razmisli...
[ _owl_ @ 18.02.2002. 13:01 ] @
milost:
$sql = "sql_upit_1; sql_upit_2";
mysql_query($sql) or die("bla bla");


Cini mi se i da u PHP manualu pise da sql upit ne sme da sadrzi tacku zarez na kraju. Najverovatnije kad se takav upit prosledjuje ignorise se sve od tacke-zareza.

[ Divine @ 18.02.2002. 13:17 ] @
Jesi li probao da stavis upite u array?
Nisam probao, jer nisam kuci kada ovo citam, ali cu probati pa cu javiti.
[ Goran Rakić @ 18.02.2002. 14:17 ] @
a da li ste probali da bacite jedno \n iliti prekid reda i izbacite ; trebalo bi da radi...mada sza ce ti to uopste...
[ Divine @ 18.02.2002. 15:15 ] @
Zar je bitno za sta???
Covjeku treba, pa pita...
\n ne radi i ne bi trebalo da radi jer:
$sql = "SELECT * from
table where id = 2";

je isto sto i

$sql = "SELECT * from \n table where id = 2";
[ milost @ 19.02.2002. 07:50 ] @
Citat:
Go! X:
a da li ste probali da bacite jedno \n iliti prekid reda i izbacite ; trebalo bi da radi...mada sza ce ti to uopste...


Ne fercera ni \n ni \r\n, sto je Smrtko i objasnio.

Sto se tice svrhe... mislim da bi se trebalo dobiti nesto u brzini... ako istu stvar ponovite 100 ili vise puta, mislim da bi se brze odradilo vise sql naredbi proturenih 'kao jedna', nego vise uzastopnih.
Pogotovu ako je MySQL server na drugoj masini od one na kojoj je PHP.

Sta mislite o ovome?
[ stanoje @ 20.02.2002. 13:54 ] @
Dodjoh-videh-padoh.
Nema vise upita odjedared iz php-a koristeci mysql f-je.
Da mi internet crkne ako lazem :).

Ubih se juce probavajuci. Mozda mozes da probas sa ODBC konekcijom
na mysql bazu. Onda odbc_prepare() pa odbc_execute() mada
odbc_prepare() odmah izvrsava ako se radi o insertu ???. Varum
to radi ne znam da ga 'bem.
Sto se tice pitanja, ako je select u pitanju treba probati lepljenje
tabela (LEFT, RIGHT ili INNER JOIN) i time dobiti o'ma' ono sto ti treba
djuture, pa ondak razvaljivati to na ono sto ti treba.
Inace preferiram da koristeci obilje mysql ugradjenih f-ja uzimam
samo ono sto mi treba. Npr, ako hocu prvih 120 karaktera iz text polja
odma SELECT LEFT(TxtPolje,120) i prikaz toga bez da ga secem sa substr()
iz PHP-a i sl.

Sto se mysql tice - generalno je madafaking brz. Evo i primera koji me je ubio u pojam:
Na jednom sajtu koji sam radio (www.fairsources.com) sa leve strane se
prikazuje lista glavnih kategorija i podkategorija proizvoda. Strana je includovana u 95% sajta i radi tako da se pri svakom ucitavanju nanovo generise lista kategorija i podkategorija.

Odlucim da to optimizujem i napravim fiksni fajl koji ce se tu prikazivati, a isti cu regenerisati samo u slucaju dodavanja kat. ili podkat. I tako ti ja to uradim i testiram i sta se desi?
PUKNEM ***ote! Kako god radio sa citanjem gotovog fajla, direktno izvlacenje svaki put ga "tuce" za 20-40 procenata!!!
Jos jedna neocekivana stvar - kada probam preko interneta sa servera
dobijem brze rezultat nego u lokalu!!.
Server je generacija PIII 800 sa 256M RAM-a Linux+Apache
Lokal je Celeron na 300 128M RAM-a W2K+PWS
Server je u Tehnicom-u na sajmu, a ja u centru grada, pa sad ti vidi.
Objasnjenje je verovatno da su najcesci upiti kesirani na serveru(ovaj je svakako takav) + brz link( 2Mb fala tcomu:>> ) + LAMP rulez kako to kazu klinci u svetu.
[ Shinhan @ 26.11.2003. 11:34 ] @
Postoji jedan JAKO dobar razlog zašto nije dozvoljeno slati više upita odjednom.
A to je SQL-Injection attack.
Da je omoguæeno slanje više upita odjednom, onda bi neko u vaš search, ili bilo koji u javnu formu mogao da doda "=0 or 1=1; select * users". Tako je moguæe obrsati celu bazu, uzeti sifre, brojeve kreditnih kartica, svašta!
Naravno, da je bolje zabraniti više upita odjednom, pa da ti šalješ jedan po jedan, nego omoguæiti SQL Injection attack.

E sad, ja mislim da sam èuo da MySQL 4 dozvoljava više upita odjednom, ali nisam siguran...
[ leka @ 26.11.2003. 11:42 ] @
Koliko sam ja upucen u ovo - u mysql_query() ne moze da se "strpa" vise od jednog SQL statement-a. Pre par godina je na PHPbuilder-u bila diskusija (kad sam ja bio aktivan na tom forumu...) na ovu temu - ispada da je to u MySQL API-ju i cak i mysql client (onaj konzolni) salje upite jedan po jedan...
[ broker @ 26.11.2003. 11:57 ] @
U temi Izvrsavanje batch SQL komandi iz PHP-a je dato i par konkretnih resenja ovog problema.
[ leka @ 26.11.2003. 13:49 ] @
Predraze ona funkcija je sasvim upotrebljiva - hvala za link.