NAVIGACIJA

Naslovna strana - Jelena Grmuša

0

1

2

3

4

5

6

7

Uvod u Web i Internet tehnologije


 

                                                                   MySQL Funkcije

 

 

 

 

mysql_connect() - upostavlja vezu sa MySQL serverom

 

 

Format: mysql_connect($host[:$port][$socket_path],$user[,$pass])

 

 

Uspostavlja vezu sa MySQL serverom. Dovoljno je da navedete i samo $host, $user i $pass (ako $user ima definisan password). Dosta retko je potrebno upisati $port odnosno $socket_path.  Takodje se može mysql_connect() proširiti funkcijom die. Funkcija die() koristi se za prekidanje skripta i "štampanje" poruke o grešci ukoliko prethodna funkcija je neuspešna (u ovom slučaju, ako konekcija nije uspostavljena).

 

 

 

PRIMER:

 

 

<?php

 

$host = "localhost";

$user = "ana";

$pass = "pass";

 

$x = mysql_connect($host, $user, $pass);

 

// ili

 

$x = mysql_connect($host, $user, $pass) or die("Veza nije mogla biti uspostavljena.");

 

//ili ako se podaci o host-u sa SUBP, korisniku, lozinci dobijaju

//preko formulara iz polja: hostname, username, password

$formhost = $_POST['hostname'];

$formuser = $_POST['username'];

$formpass = $_POST['password'];

 

$x = mysql_connect($formhost, $formuser, $formpass) or die("Veza nije mogla biti uspostavljena.");

 

 

?>

 

 

mysql_close() - gasi vezu sa MySQL serverom

 

 

Format: mysql_close($veza)

 

 

Gasi vezu sa serverom koju ste uspostavili koristeći mysql_connect

 

PRIMER:

 

 

<?php

 

$x = mysql_connect ($host, $user, $pass);

 

## korisnicki iskaz

 

$y = mysql_close($x);

 

// Rezultat je: veza sa serverom je prekinuta

 

?>

 

 

 

 

mysql_pconnect() - upostavlja trajnu vezu sa MySQL serverom

 

 

Format: mysql_pconnect($host[:$port][$socket_path],$user[,$pass])

 

   pri uspostavljanju veze, iskaz prvo trazi postojecu vezu, i ako veza postoji, nece novu uspostavljati

 

 

mysql_select_db() - selektuje MySQL bazu

 

 

Format: mysql_select_db($baza[,$veza])

 

 

Selektuje MySQL bazu. Ako $veza nije definisana, koristi se trenutna aktivna veza.

 

PRIMER:

 

 

<?php

 

$x = mysql_connect($host,$user,$pass);

$y = mysql_select_db($baza);

 

// Rezultat je: baza je odabrana

 

?>

 

 

 

 

mysql_query() - šalje MySQL iskaz MySQL serveru

 

 

Format: mysql_query($iskaz[,$veza])

 

 

Šalje MySQL iskaz MySQL serveru. Iskaz se može proširiti sa die

 

Vidite i: mysql_result

 

PRIMER:

 

 

<?php

 

$naziv=$_POST['naziv'];

$oblast=$_POST['oblast'];

$query 

sprintf("SELECT* FROM K WHERE NAZIV='%s' AND OBLAST='%s'",
    
mysql_real_escape_string($naziv),
    
mysql_real_escape_string($oblast));

//izvrsavanje upita

$x mysql_query($query);

 

?>

 

 

 

 

 

mysql_result() - vraća podatke iz rezultata

 

 

Format: mysql_result ($rezultat,$broj_reda[$kolona])

 

 

Vraća podatke iz rezultata, i to rezultate određenog reda. Ovaj iskaz je jedan od starijih, i dosta je sporiji od

mysql_fetch_object.

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT * FROM tabela");

 

for($i=0; $i<mysql_num_rows($x); $i++)

{

    $id = mysql_result($x,$i,0);

    echo "$imena | ";

}

 

mysql_free_result($x);

 

/* Rezultat je: sadržaj tabele (na primer imena odvojena sa pipe "|") */

 

?>

 

 

 

 

 

mysql_num_fields() - vraća broj kolona u rezultatu

 

 

Format: mysql_num_fields($rezultat[,$veza])

 

 

Vraća broj kolona u rezultatu. Ako $veza nije definisana, koristi se trenutna aktivna veza. Može se korisiti i mysql_listtables (stariji iskaz).

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT * FROM tabela");

 

echo mysql_num_fields($x);

 

// Rezultat je: 15 (jer se na primer 15 polja (kolona) nalazi u tabeli

 

?>

 

 

 

 

mysql_num_rows() - vraća broj redova u rezultatu

 

 

Format: mysql_num_rows($rezultat[,$veza])

 

 

Vraća broj redova u rezultatu. Ako $veza nije definisana, koristi se trenutna aktivna veza. Ova iskaz funkcioniše uz SQL iskaz SELECT. Za ostale iskaze kao što su INSERT, UPDATE i sl. koristiti mysql_affected_rows.

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

 

echo mysql_num_rows($x);

 

// Rezultat je: 212 (jer se toliko redova nalazi u tabeli)

 

?>

 

 

 

 

 

 

 

 

 

mysql_affected_rows() - vraća broj redova modifikovanih poslednjim iskazom

 

 

Format: mysql_affected_rows($rezultat)

 

 

Vraća broj redova tabele, koje su modifikovane poslednjim isazom. Dakle, funkcija ne reaguje na SELECT iskaz, nego samo na iskaze koje modifikuju tabelu (INSERT, UPDATE i sl.). Ako je poslednji query bio DELETE bez WHERE iskaza, i tim iskazom je ispranjena čitava tabela, sto znaci da su svi redovi tabele modifikovani ovom komadnom, mysql_affected_rows() će vratiti kao rezultat 0 (nula), jer je tabela prazna.

 

PRIMER:

 

 

<?php

 

$z="DELETE

FROM tabela

WHERE IME ='{$_POST['naziv']}' AND OBLAST = '{$_POST['oblast']}' ";

 

$x = mysql_query($z);

 

echo mysql_affected_rows();

 

// Rezultat je: broj redova u kojima se nalazilo zadato ime i oblast

 

?>

 

 

 

 

mysql_change_user() - menja korisnika aktivne mysql konekcije

 

 

Format: mysql_change_user ($user, $pass[,$db]);

 

 

Ako ste drugi korisnik, morate uspostaviti totalno novu vezu sa bazom ili prekinuti prvu vezu, i ponovo se konektovati na bazu koristeći nove podatke. Ovaj iskaz  omogućuje da u trenutno aktivnoj vezi sa MySQL bazom promenite korisnika ($user). To je veoma korisno ako na primer za izvršavanje nekog iskaza trebaju veća prava od onih koje poseduje trenutni korisnik.

 

PRIMER:

 

 

<?php

 

$user = "root";

$pass = "pass";

 

$x = mysql_change_user ($user, $pass);

 

if ($x)

{

     ## korisnicki iskaz

}

 

$y = mysql_change_user ($stari_user, $stari_pass);

 

/* Rezultat je: iskaz će biti izvršen koristeći prava novog korisnika */

 

 

?>

 

 

 

 

 

mysql_create_db() - kreira MySQL bazu

 

 

Format: mysql_create_db($db[,$veza])

 

 

Kreira bazu na MySQL serveru. Definisanje $veze (mysql_connect ) nije obavezno. Moguće je koristiti i mysql_createdb (starija iskaz).

 

PRIMER:

 

 

<?php

 

$x = mysql_connect($host,$user,$pass);

$y = mysql_create_db("PHP_matf",$x]);

 

// Rezultat je: baza sa imenom PHP_matf je kreirana.

 

?>

 

 

 

 

mysql_data_seek() - pristup do određenog dela rezultata iz MySQL baze

 

 

Format: mysql_data_seek($rezultat,$broj_vrste)

 

 

Funkcioniše na slican nacin kao iskaz mysql_fetch_object. mysql_data_seek() pomera interni pokazivac na zadatu vrstu rezultata MySQL upita. Posle poziva funkciji mysql_fetch_row() kao rezultat ce se dobiti zadata vrsta. $broj_vrste je u intervalu od 0 domysql_num_rows() - 1. No, ako rezultat upita je prazan skup (mysql_num_rows() == 0), onda poziv mysql_data_seek() sa vrednoscu $broj_vrste postavljenom 0 ce vratiti FALSE.

 

PRIMER:

 

 

<?php

 

$rezultat = mysql_query("SELECT * FROM tabela");

mysql_data_seek($rezultat,4);

$red = mysql_fetch_row($rezultat);

echo $red[0];

 

// Rezultat je: 4. red dobijenog rezultata iz tabele

 

?>

 

 

 

 

mysql_db_query() - šalje MySQL query za određenu bazu

 

 

Format: mysql_db_query($baza,$query[,$veza])

 

 

Funkcionise na isti nacin kao

mysql_query, samo sto za ovaj iskaz morate navesti i ime baze. Koristi se ako morate da pregledate podatke iz više baza. Može se koristiti i mysql (stariji iskaz). Ako $veza nije definisana, iskaz koristi trenutno aktivnu vezu.

 

PRIMER:

 

 

<?php

 

mysql_db_query("PHP_net","SELECT * FROM tabela");

 

/* Rezultat je: selektovano je sve iz tabele tabela iz baze PHP_net. Dalje se može ovaj rezultat pomocu mysql_fetch_array, mysql_fetch_row, mysql_fetch_object obraditi */

 

?>

 

 

 

 

mysql_drop_db() - Brise MySQL bazu

 

 

Format: mysql_drop_db($db[,$veza])

 

 

Brise bazu na MySQL serveru. Ako $veza nije definisana, onda se koristi trenutno aktivna veza.

 

Vidite i: mysql_create_db

 

PRIMER:

 

 

<?php

 

$x = mysql_drop_db("PHP_net");

 

if ($x)

{

     echo "Baza PHP_net je obrisana";

}

 

// Rezultat je: Baza PHP_net je obrisana (ako je iskaz uspeo)

 

?>

 

 

 

 

mysql_errno() - vraća numericku vreednost error poruke poslednje iskaza

 

 

Format: mysql_errno([$veza])

 

 

Vraća numericku vreednost error poruke poslednje MySQL iskaza. Ako $veza nije definisana, koristi se trenutno aktivna veza.  Koristi SE I u kombinaciji sa mysql_error

 

PRIMER:

 

 

<?php

 

$db = mysql_select_db ($baza);

echo mysql_errno().": ".mysql_error();

 

// Rezultat je: 1046: No Database Selected

 

?>

 

 

 

 

mysql_error() - vraća tekst error poruke poslednjeg iskaza

 

 

Format: mysql_error([$veza])

 

 

Vraća tekst error poruke poslednjeg MySQL iskaza. Ako $veza nije definisana, koristi se trenutno aktivna veza. Koristi se u kombinaciji sa mysql_errno

 

PRIMER:

 

 

<?php

 

$db = mysql_select_db ($baza);

echo mysql_errno().": ".mysql_error();

 

// Rezultat je: 1046: No Database Selected

 

?>

 

 

 

 

mysql_fetch_array() - stavlja rezultat iz baze u niz

 

 

Format: mysql_fetch_array($rezultat[,$array_vrsta])

 

 

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

 

while ($red = mysql_fetch_array($x))

{

     echo $red['ime']." ".$red['prezime'];

     // ili echo $red[0]." ".$red[1];

}

 

mysql_free_result($x);

 

// Rezultat je: sva imena i prezimena iz tabela tabela

 

?>

 

 

 

 

mysql_fetch_assoc() - stavlja rezultat iz baze u asocijativni niz

 

 

Format: mysql_fetch_assoc($rezultat)

 

 

Ova iskaz ima istu funkciju kao mysql_fetch_array

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

 

while ($red = mysql_fetch_assoc($x))

{

     echo $red['ime']." ".$red['prezime'];

}

 

mysql_free_result($x);

 

// Rezultat je: sva imena i prezimena iz tabela tabela

 

?>

 

 

 

 

mysql_fetch_field() - vraća informacije o jednoj koloni u obliku objekta

 

 

Format: mysql_fetch_field($rezultat)

 

 

Vraća informacije o jednoj koloni u obliku objekta. Mogući rezultati u objektu su:

· name - ime kolone

 

· table - ime tabele

 

· max_length - maksimalna dužina kolone

 

· not_null - 1, ako kolona može biti null

 

· primary_key - 1, ako je kolona primarni kljuc (primary key)

 

· unique_key - 1, ako je kolona jedinstveni kljuc (unique key)

 

· multiple_key - 1, ako je kolona nije jedinstveni kljuc (non-unique key)

 

· numeric - 1, ako je kolona ima numericku vreednost

 

· blob - 1, ako je kolona tipa blob

 

· type - tip kolone

 

· unsigned - 1, ako je kolona unsigned

 

· zerofill - 1, ako je kolona zero-filled

 

 

PRIMER:

 

 

<?php

 

// php.net primer

 

$x = mysql_query("SELECT * FROM tabela");

 

while ($i < mysql_num_fields($x))

{

    echo "Informacije za kolonu $i:<br />n";

    $meta = mysql_fetch_field($x);

    if (!$meta)

    {

        echo "Nema informacija<br />n";

    }

    echo "<PRE>

blob:         $meta->blob

max_length:   $meta->max_length

multiple_key: $meta->multiple_key

name:         $meta->name

not_null:     $meta->not_null

numeric:      $meta->numeric

primary_key:  $meta->primary_key

table:        $meta->table

type:         $meta->type

unique_key:   $meta->unique_key

unsigned:     $meta->unsigned

zerofill:     $meta->zerofill

</PRE>";

    $i++;

}

mysql_free_result ($x);

 

/* Rezultat je: gore navedene informacije o svi kolonama u tabeli tabela npr:

 

Informacije za kolonu :

 

blob:         0

max_length:   2

multiple_key: 0

name:         I_SIF

not_null:     1

numeric:      1

primary_key:  1

table:        tabela

type:         int

unique_key:   0

unsigned:     0

zerofill:     0

 

Informacije za kolonu 1:

 

blob:         0

max_length:   35

multiple_key: 0

name:         ime

not_null:     1

numeric:      0

primary_key:  0

table:        tabela

type:         string

unique_key:   0

unsigned:     0

zerofill:     0

 

Informacije za kolonu 2:

 

blob:         0

max_length:   50

multiple_key: 0

name:         prezime

not_null:     1

numeric:      0

primary_key:  0

table:        tabela

type:         string

unique_key:   0

unsigned:     0

zerofill:     0

 

... */

 

?>

 

 

 

 

mysql_fetch_lengths() - vraća dužinu svakog polja u rezultatu u obliku niza

 

 

Format: mysql_fetch_lengths($rezultat)

 

 

Vraća dužinu svakog polja u rezultatu u obliku skalarnog niza.

 

Vidite i: mysql_fetch_object

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT * FROM tabela");

 

while($red = mysql_fetch_row($x))

{

  $dužina = mysql_fetch_lengths($x);

  echo "$red[1] ($dužina[1])<br />n";

}

 

mysql_free_result($x);

 

// Rezultat je: sve dužine sa imenima

Ana (3)

Marija (6)

Sara (4)

 

... */

 

?>

 

 

 

 

mysql_fetch_object() - stavlja rezultat iz baze u objekt

 

 

Format: mysql_fetch_object($rezultat[,$vrsta_objekta])

 

 

Stavlja rezultat iz baze u objekt. Sve ostalo funkcionise na isti nacin kao kod mysql_fetch_array

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

 

while ($red = mysql_fetch_array($x))

{

     echo $red ->ime;

     echo $red ->prezime;

}

 

mysql_free_result($x);

 

// Rezultat je: sva imena i prezimena iz tabela tabela

 

?>

 

 

 

 

mysql_fetch_row() - stavlja rezultat iz baze u skalarni niz

 

 

Format: mysql_fetch_row($rezultat)

 

 

Funkcionise na isti nacin na mysql_fetch_array, samo sto rezultat stavlja u skalarni niz.

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela"); 

 

while ($red = mysql_fetch_row($x)) 

{ 

     echo "Ime: ".$red[0]." - Prezime: ".$red[1]."<br />";

} 

 

mysql_free_result($x); 

 

// Rezultat je: sva imena i prezimena iz tabela tabela

 

?>

 

 

 

 

mysql_field_flags() - vraća dodatne informacije u vezi određene kolone

 

 

Format: mysql_field_flags($rezultat,$kolona)

 

 

Vraća dodatne informacije u vezi određenog polja u rezultatu, kao što su: "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".

 

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT I_SIF, prezime FROM tabela");

 

echo mysql_field_flags($x,0);

 

// Rezultat je: not_null primary_key

 

?>

 

 

 

 

mysql_field_name() - vraća ime određene kolone

 

 

Format: mysql_field_name($rezultat,$broj_kolone)

 

 

Vraća ime određene kolone na osnovu rednog broja.

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT * FROM tabela");

 

for ($i=0; $i<mysql_num_fields($x); $i++)

{

     echo mysql_field_name($x,$i)." | ";

}

 

/* Rezultat je: sva polja iz tabele npr.

I_SIF | ime | prezime |  */

 

?>

 

 

 

 

mysql_field_len() - vraća dužinu određene kolone

 

 

Format: mysql_field_len($rezultat,$kolona)

 

 

Vraća dužinu određene kolone. Moguće je koristiti i mysql_fieldlen (stari iskaz).

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

 

for($i=0; $i<mysql_num_fields($x); $i++)

{

     echo mysql_field_len($x,$i)." ";

}

 

// Rezultat je npr: 50 100

 

?>

 

 

 

 

mysql_field_seek() - pristupa u određenu kolonu rezultata

 

 

Format: mysql_field_seek($rezultat,$kolona)

 

 

Pristupa u određenu kolonu rezultata, tako da

mysql_fetch_field  može čitati rezultat iz te kolone bez zadavanja broja kolone.

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT main_id, ime, prezime FROM tabela");

 

mysql_field_seek($x,2);

$red = mysql_fetch_field($x);

echo $red->prezime;

 

// Rezultat je: prezime

//

 

?>

 

 

 

 

mysql_field_table() - vraća ime tabele u kojoj se nalazi određena kolona

 

 

Format: mysql_field_table($rezultat,$kolona)

 

 

Vraća ime tabele u kojoj se nalazi određena kolona.

Moguće je koristiti i mysql_fieldtable .

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela");

echo mysql_field_table($x,1);

 

// Rezultat je: tabela

 

?>

 

 

 

 

mysql_field_type() - vraća tip određene kolone iz rezultata

 

 

Format: mysql_field_type()

 

 

Vraća tip određene kolone iz rezultata. Tip može biti: "int", "real", "string", "blob" itd. 

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT main_id, prezime FROM tabela");

 

for($i=0; $i<mysql_num_fields($x); $i++)

{

     echo mysql_field_type($x,$i).", ";

}

 

// Rezultat je: int, string

 

?>

 

 

 

 

mysql_free_result() - brise rezultat (oslobadja memoriju)

 

 

Format: mysql_free_result($rezultat)

 

 

Oslobadja memoriju od rezultata MYSQL upita. Ovaj iskaz nije obavezan, jer se memorija ionako prazni kada skript zavrsi svoj rad, ali ukoloko su upiti veliki i mislite da mogu usporiti rad, koristite mysql_free_result. Takodje se koristi mysql_freeresult (stariji iskaz).

 

PRIMER:

 

 

<?php

 

$x = mysql_query("SELECT ime, prezime FROM tabela"); 

 

// korisnički iskaz

 

mysql_free_result($x);

 

// Rezultat je: $x je izbrisan iz memorije

 

?>

 

 

 

 

mysql_insert_id() - vraća ID poslednjeg SQL INSERT iskaza

 

 

Format: mysql_insert_id([$veza])

 

 

Vraća ID poslednjeg SQL INSERT iskaza. ID je polje definisano u tabeli sa auto_increment. Vraća 0, ako kolona ne kreira sledeci broj pomocu auto_increment. Za MySQL iskaza je puno pogodnije koristiti internu MySQL iskaz LAST_INSERT_ID()

na primer:

INSERT ...

WHERE main_id= LAST_INSERT_ID().

 

PRIMER:

 

 

<?php

 

mysql_query("INSERT INTO tabela

             VALUES (1965, 10000)");

$poslednji_id = mysql_insert_id();

 

echo $poslednji_id;

 

// Rezultat je: 125

 

?>

 

 

 

 

mysql_list_dbs() - vraća listu svih baza na MySQL serveru

 

 

Format: mysql_list_dbs([$veza])

 

 

Vraća listu svih baza na MySQL serveru.

 

PRIMER:

 

 

<?php

 

$x = mysql_connect($host, $user, $pass);

$y = mysql_list_dbs($x);

 

while ($red = mysql_fetch_array($y)) 

{ 

     echo $red ->Database." | "; 

} 

 

mysql_free_result($x);

 

// Rezultat je: sve baze na serveru

 

?>


 

 

 

mysql_list_fields() - vraća informacije o tabeli

 

 

Format: mysql_list_fields($baza,$tabela[,$veza])

 

 

Vraća informacije, odnosno imena kolona iz tabele. Ako $veza nije definisana, koristi se trenutna aktivna veza.

 

PRIMER:

 

 

<?php

 

$x = mysql_list_fields($baza, $tabela);

$kolone = mysql_num_fields($x);

 

for ($i = 0; $i < $kolone; $i++) {

  echo mysql_field_name($x, $i) . " | ";

}

 

/* Rezultat je: imena svih polja (kolona) iz baze

na primer:

main_id | ime | prezime | ... */

 

?>

 

 

 

 

mysql_list_tables() - vraća listu tabela određene MySQL baze

 

 

Format: mysql_list_tables($baza[,$veza])

 

 

Vraća listu tabela određene MySQL baze. Ako $veza nije definisana, koristi se trenutna aktivna veza. Može se korisiti i mysql_listtables (starija iskaz).

 

Vidite i: mysql_tablename

 

PRIMER:

 

 

<?php

 

$x = mysql_list_tables($baza);

 

for($i=0; $i<mysql_num_rows($x); $i++)

{

       echo mysql_tablename($x, $i) . " | ";

}

 

// Rezultat je: lista svih tabela u bazi

 

?>

 

 

 

 

 

 

 

 

 

 

 

 

mysql_tablename() - vraća ime tabele iz rezultata

 

 

Format: mysql_tablename($rezultat,$broj)

 

 

Vraća ime tabele koristeći rezultat od mysql_list_dbs

 

PRIMER:

 

 

<?php

 

$x = mysql_list_tables($baza); 

 

for($i=0; $i<mysql_num_rows($x); $i++)

{

    echo mysql_tablename($x, $i) . " | "; 

}

 

// Rezultat je: lista svih tabela u bazi

 

?>