mysqli_query (smanjen ili ne)?

Na pocetku sam query pisao ovako:

$cena = mysql_query("SELECT * FROM oglasi WHERE id = {$_GET['id']}");
$oneCena = mysql_fetch_array($cena);
$cena = $oneCena['cena'];

$godiste = mysql_query("SELECT * FROM oglasi WHERE id = {$_GET['id']}");
$oneGodiste = mysql_fetch_array($godiste);
$godiste = $oneGodiste['godiste'];

$kubikaza = mysql_query("SELECT * FROM oglasi WHERE id = {$_GET['id']}");
$oneKubikaza = mysql_fetch_array($kubikaza);
$kubikaza = $oneKubikaza['kubikaza'];

Posle sam to prepravio ovako:

$query = mysqli_query($con,"SELECT * FROM oglasi WHERE id = {$_GET['id']}");
$get = mysqli_fetch_array($query);
$cena = $get['cena'];
$godiste = $get['godiste'];
$kubikaza = $get['kubikaza'];

Ovim sam znatno smanjio kolicinu koda ali me zanima jesam li smanjio broj querija ili je on ipak ostao isti?

Smanjio si normalno, gore tri kverija za jednu istu stvar…

1 Like

Ma bilo ih je 80 :smiley: Ja sam neveo samo 3 radi primera.Ta skripta mi je imala 486 redova a kad sam je prepravio ovako 185 :smile:

Hvala.Nisam bio siguran dalmi se i ova varijabla $get racuna u query ili samo $query.Izgleda da sam postigao ono sto sam hteo.Idem sad da proucimmalo inner join pa da jos malo smanjim kolicinu query-ja!
Pozdrav!

koliko se meni cini ti imas barem 100 linija viska ako imas takav pristup…

  1. koristi mysqli_fetch_assoc umjesto mysqli_fetch_array

  2. ne trebaju ti posebne varijable za svaku stvar, ako ti treba npr. cijena, imas ju pod $get[‘cijena’], ako ti treba godiste, imas pod $get[‘godiste’] vec sve to definirano, nema potrebe da jos jednom deklariras 100 varijabli

  3. ako ti query cita samo jedan red upisa, mozes staviti LIMIT 1 na kraj querya

  4. ako u selectu nabrojis polja koja ti trebaju tipa (cena, godiste, kubikaza, id…) query ce ti biti brzi nego da ides s *

  5. dodaj uvjete kod querya-a, npr.

     if (isset($_GET['id']) && is_numeric($_GET['id'])){
        $id_oglasa= mysqli_real_escape_string($_GET['id']);
        $query=mysqli_query($con,"SELECT (cena, kubikaza,id,godiste...) FROM oglasi WHERE id='".$id_oglasa."' LIMIT 1";
        if ($query){
           if ($get=mysqli_fetch_assoc($query)){
              //ovdje nastavaljas s kodom, varijable ti se nalaze u $get['ime_polja_u_tablici']
           ...
           ...
           ....
           }
        }
     }
    

    }

Trebaju mi sva polja.Jer kad se otvori ta stranica na njoj ucitavam sve podatke koji su uneti u tom oglasu.

A zasto bih ovde nabrajao polja ako mi trebaju sva?
U oba slucaja posle idem:

$cena = $get['cena'];
$godiste = $get['godiste'];
$kubikaza = $get['kubikaza'];

i td…

Meni se ovaj kod sto sam ja naveo (donji) cini kraci nego da sam pisao kao sto si ti naveo u svom primeru.
(Ne kazem da tvoj primer nije bolji samo sam radoznao)

ako ti trebaju sva polja, ako ih nabrojis sve unutar () query ce ti biti brzi nego da radis query s *, iako ce vratiti iste podatke
da, sam query u phpu ce ti biti duzi, ali ce se na serveru izvrsiti brze.
zdravo seljacki - ako kazes daj mi sve iz te tablice gdje je nesto jednako nesto, potrebno je vrijeme da se odredi sta je to sve, sto treba vratiti.
ako kazes daj mi to, to, to i to, vrate ti se ti podaci i nema te provjere

ista stvar i kod LIMIT 1, ako kazes daj mi sve gdje je nesto jednako nesto, nije ista stvar kao kad kazes daj mi jedan rezultat gdje je nesto jednako nesto, kada nema limita, i dalje se provjeravaju svi upisi, dok kad postoji limit, kad se nadje jedan unos koji odgovara tome sto trazis query je zavsen

ovaj kod s[quote=“joca013, post:6, topic:12566”]
$cena = $get[‘cena’];
$godiste = $get[‘godiste’];
$kubikaza = $get[‘kubikaza’];
[/quote]

ti ne treba jer sve to vec imas u nizu $get, pa kad ti treba ispis tipa cijena ispises ju s $get[‘cena’] ne treba ti jos jedna varijabla tu
ako vec iz bogznakojeg razloga brijes da to treba tako biti, imas funkciju list, koja ce ti sve te deklaracije napraviti u jednoj liniji, dakle sve te pojedinacne varijable mozes iz niza generirati pomocu list

list ($cena, $godiste, $kubikaza...)=$get;

mysql_fetch_array ti vraca i assoc. niz i ‘brojcani’, a ti koristis samo assoc. zato izmjena u mysql_fetch_assoc, jer ionako ne koristis brojacani niz, cemu onda opet duplat podatke

ono… dobronamjerno ti kazem kako mozes optimizirat kod, ako zelis poslusaj me, ako ne zelis nemoj. Proguglaj sam malo pa ces viditi best practises za odredjene stvari

1 Like

Poslusaj ga sta ti prica… mysql_fetch_array ti vraca assoc i brojacani, mysql_fetch_assoc vraca samo assoc, a mysql_fetch_row vraca samo brojcani…

Naravno da cu poslusati, prepravicu sve to nocas cim dodjem s’ posla. Hvala na korisnim informacijama.
E sad sto se tice ovog $marka=$get[‘marka’]
To sam uradio da bih sebi olaksao preglednost. Napisao sam sve to kao funkcije i inkludovao na stranicu gde cu to prikazivati i onda idem eho $marka, echo $model… ali mogu i odmah echo $get[‘marka’] ako je tako bolje. Moracu da pitam za jos jedan savet u vezi queri-ja ali to cu kad dodjem kuci da mogu odmah da nalepim primer.

Prepravio sam sve kao sto si mi rekao samo sam ovo (cena,kubikaza,id,godiste…) stavio bez zagrade,sa zagradom nije htelo da radi.Muci me samo jos nesto sa ovim query-jem.

Recimo da imam tabelu prijatelji
id prijatelj
1 webdeveloping031
2 shimi
3 creatifcode
4 bozoou
5 apazinjan
6 drmrgood

$query = mysqli_query($con,"SELECT id,prijatelj FROM prijatelji
 WHERE id IN ('1','4,'5')");

Ovim query-jem sam izvadio iz baze
1 webdeveloping031
4 bozoou
5 apazinjan

Kako sad da deklarisem webdeveloping031 kao $prijatelj1,bozoou kao $prijatelj4, apazinjan kao $prijatelj5
da bih posle mogao echo $prijatelj1,echo $prijatelj4 i td…?

prvo query ti ne valja :slight_smile:

SELECT id,prijatelj FROM prijatelji WHERE id IN ('1','4','5')

ovako treba da izgleda (tebi fali ’ kod 4) drugo kad imas query koji selektuje vise redova ja to ovako radim

if ( $result=mysql_query("SELECT id,prijatelj FROM prijatelji WHERE id IN ('1','4,'5')")) {
$data=array()
while ($one = mysql_fetch_assoc($result)) {
$data[]=$one;
}
}

svi podaci su ti sad u ovom nizu $data
kad uradis var_dump($data) trebalo bi ovako nesto da izgleda
[0] => array(
[‘id’] => 1
[‘prijatelj’] => ‘webdeveloping031’
)
[1] => array(
[‘id’] => 4
[‘prijatelj’] => ‘bozoou’
)
[2] => array(
[‘id’] => 5
[‘prijatelj’] => ‘apazinjan’
)


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey