Računala Windows Internet

Korištenje mysql u php. Osnove rada s MySQL-om u PHP-u. Povezivanje s MySQL bazom podataka

MySQL je vrsta relacijske baze podataka. MySQL je poslužitelj na koji se mogu povezati različiti korisnici.

Prilikom spajanja na internet upisujete svoje korisničko ime i lozinku, kao i naziv poslužitelja na koji se spajate? Isti sustav se koristi i pri radu s MySQL-om.

Još jedna stvar: što je relacijska baza podataka? Relacijski znači tablični. Microsoftov poznati uređivač proračunskih tablica Excel zapravo je uređivač relacijske baze podataka.

Povezivanje na MySQL poslužitelj

PHP koristi funkciju mysqli_connect () za povezivanje s MySQL poslužiteljem. Ova funkcija uzima tri argumenta: ime poslužitelja, korisničko ime i lozinku.

Funkcija mysqli_connect () vraća identifikator veze, sprema se u varijablu i kasnije se koristi za rad s bazama podataka.

Kôd veze s MySQL poslužiteljem:

$ link = mysqli_connect ("localhost", "root", "");

U ovom slučaju radim za lokalno računalo na Denwereu, tako da je ime hosta localhost, korisničko ime je root i nema lozinke.

Također morate zatvoriti vezu nakon što završite rad s MySQL-om. Za zatvaranje veze koristi se funkcija mysqli_close (). Proširivanje primjera:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_close ($ link);

Ovdje smo provjerili istinitost identifikatora veze, ako nešto nije u redu s našom vezom, tada se program neće izvršiti, funkcija die () će zaustaviti njegovo izvršavanje i prikazati poruku o pogrešci u pregledniku.

Pogreške u povezivanju

Za provjeru veze koriste se sljedeće funkcije:

  • mysqli_connect_errno () - Vraća šifru pogreške posljednjeg pokušaja povezivanja. Vraća nulu ako nema grešaka.
  • mysqli_connect_error () - Vraća opis posljednje pogreške pri povezivanju s MySQL poslužiteljem.
definirati ("HOST", "localhost"); definirati ("DB_USER", "root"); definirati ("DB_PASSWORD", ""); definirati ("DB", "tester"); $ link = mysqli_connect (HOST, DB_USER, DB_PASSWORD, DB); / * provjerite vezu * / if (mysqli_connect_errno ()) (printf ("Povezivanje nije uspjelo:% s \ n", mysqli_connect_error ()); exit ();) else (printf ("Povezivanje nije uspjelo:% s \ n" , mysqli_get_host_info ($ link));)

Mysqli_get_host_info () vraća niz koji sadrži vrstu korištene veze.

Također, imajte na umu da sam pomoću naredbe define spremio sve parametre veze u konstante. Kada pišete velike projekte, a bit će mnogo datoteka povezanih s MySQL poslužiteljem, prikladno je pohraniti parametre veze u zasebnu datoteku i umetnuti je pomoću funkcije uključiti ili zahtijevati.

Odabir baze podataka

Na MySQL poslužitelju može postojati više baza podataka. Prije svega, trebamo odabrati bazu koja nam je potrebna za rad. PHP ima još jedan parametar za to u funkciji mysqli_connect () - naziv baze podataka.

Napravio sam ga na svom računalu putem phpMyAdmin pod nazivom tester. Na njega se povezujemo:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); mysql_close ($ link);

Dakle, odabrali smo bazu podataka za rad. No, kao što znamo, relacijska baza podataka sastoji se od tablica, a naša baza podataka još nema tablice. Baza je kreirana prazna, nema tablica. Tablice mu se moraju dodati zasebno. Dodajmo mu tablicu pomoću PHP-a.

Napravite tablicu

U nazivu MySQL baza podataka, SQL dio je skraćenica za Structured Query Language, što se prevodi kao strukturirani jezik upita. Na SQL jezik pisat ćemo upite i iz PHP programa ih slati na MySQL poslužitelj.

Da bismo stvorili tablicu, samo trebamo odrediti naredbu CREATE TABLE. Napravimo tablicu s imenom korisnici u čijim stupcima će biti pohranjene prijave (stupac za prijavu) i lozinke (stupac lozinke) korisnika.

$ query = "KREIRAJ TABLE korisnika (prijava VARCHAR (20), lozinka VARCHAR (20))";

U ovom kodu smo varijabli upita $ dodijelili niz teksta koji predstavlja SQL upit. Izrađujemo tablicu s imenom korisnici koja sadrži dva stupca prijavu i lozinku, od kojih oba imaju tip podataka VARCHAR (20). O tipovima podataka ćemo kasnije, za sada ću samo napomenuti da je VARCHAR (20) string maksimalne duljine od 20 znakova.

Za slanje našeg upita MySQL poslužitelju koristimo PHP funkciju mysqli_query (). Ova funkcija vraća pozitivan broj ako je operacija bila uspješna i lažna ako je došlo do greške (sintaksa zahtjeva je netočna ili program nema dopuštenje za izvršavanje zahtjeva).

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "KREIRAJ TABLE korisnika (prijava VARCHAR (20), lozinka VARCHAR (20))"; mysqli_query ($ upit); mysqli_close ($ link);

SQL upit ne treba biti zapisan u varijablu, može se napisati izravno kao argument funkciji mysql_query (). Samo što kod izgleda čitljivije.

Ova skripta ima jedan nedostatak - ne daje ništa pregledniku. Dodajmo poruku:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "KREIRAJ TABLE korisnika (prijava VARCHAR (20), lozinka VARCHAR (20))"; if (mysqli_query ($ upit)) echo "Tablica je stvorena."; else echo "Tablica nije kreirana."; mysqli_close ($ link);

Ako ponovno pokrenemo ovu skriptu za izvršenje, vidjet ćemo poruku u pregledniku: "Tablica nije stvorena." Činjenica je da je tablica stvorena pri prvom pokretanju i nemoguće je ponovno kreirati tablicu s istim imenom. Suočeni smo sa situacijom pogreške, pa je vrijeme da razgovaramo o rukovanju greškama pri radu s MySQL-om.

Greška u obradi

Prilikom otklanjanja pogrešaka u programu, možda će nam trebati precizne informacije o pogrešci. Kada dođe do pogreške u MySQL-u, poslužitelj baze podataka postavlja broj pogreške i niz koji opisuje pogrešku. PHP ima posebne funkcije za pristup ovim podacima.

  • mysqli_errno () - Vraća broj pogreške.
  • mysqli_error () - Vraća niz koji opisuje pogrešku.

Sada, dodajmo funkciju mysql_error () našoj skripti:

$ link = mysql_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "KREIRAJ TABLE korisnika (prijava VARCHAR (20), lozinka VARCHAR (20))"; if (mysqli_query ($ upit)) echo "Tablica je stvorena."; else echo "Tablica nije stvorena:" .mysqli_error (); mysqli_close ($ link);

Sada će naša skripta vratiti redak pregledniku: "Tablica nije stvorena: Tablica" korisnici "već postoji".

Spuštanje stola

Dakle, sada imamo stol koji nam nije potreban. Vrijeme je da naučite kako izbrisati tablice iz baze podataka.

Za ispuštanje tablice koristite naredbu DROP TABLE nakon koje slijedi naziv tablice.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "ISPUSTI TABLE korisnika"; if (! mysqli_query ($ upit)) echo "Pogreška prilikom brisanja tablice:" .mysqli_error (); else echo "Tablica je obrisana."; mysqli_close ($ link);

Ishodi

Dakle, savladali smo osnove MySQL-a. Što smo naučili raditi:

  • Povežite se s MySQL bazom podataka pomoću funkcije mysqli_connect ().
  • Zatvorite vezu s MySQL poslužiteljem pomoću funkcije mysqli_close ().
  • Poslati SQL upit s na MySQL poslužitelj pomoću funkcije mysqli_query ().
  • Naučili smo SQL upit za kreiranje tablice: kreiraj tablicu.
  • Naučili smo SQL upit za ispuštanje tablice: ispusti tablicu.
  • Naučili smo kako postupati s pogreškama pomoću funkcija mysqli_errno () i mysqli_error ().

Zatim ćemo pobliže pogledati MySQL tipove podataka.

Čitamo sljedeću lekciju:

Svoju bazu sam nazvao "phptest". Nakon što kliknete na gumb "Kreiraj", trebali biste biti automatski prebačeni u bazu podataka koju ste kreirali.

Napravite tablicu u bazi podataka

Ni u ovom postupku nema ništa komplicirano. Napravimo tablicu u koju ćemo pohraniti naslov naših članaka i sam tekst:

Kao što vidite u broju polja stavio sam broj 3, zašto? Uostalom, moramo stvoriti dva polja, jedno za naslov i tekst. Poanta je da tablica u bazi mora imati jedno dodatno polje. Za što? Ovo polje je zamjensko identifikacijski broj, (to jest, mi nekako brojimo svoje retke u tablici) tako da dobivamo jedinstveni broj za svaki red tablice. Ovo je korisno za pronalaženje potrebnog niza u bazi podataka. Ovo polje se obično naziva id i izloženo mu je AUTO_INCREMENT(U nastavku ću pokazati gdje je izložen). AUTO_INCREMENT vam omogućuje da svakom retku dodijelite jedinstveni broj, tako da nećete pronaći zapis s istim brojem u tablici baze podataka!

nakon što unesete naziv i broj polja, pritisnite "OK" dolazimo na stranicu za kreiranje polja. Priznajem vam, ne razumijem baš što radim kada kreiram polja, ali to me ne sprječava da radim s njima. Ispunite ovako:

I ispunite dva polja koja su nam potrebna:

Zašto samo dva? Budući da će prvo polje id biti automatski popunjeno od strane AUTO_INCREMENT. Kliknite "OK". Sada na kartici "Pregled" možete vidjeti liniju koju smo napravili u tablici:

Pa, naučili smo kako kreirati tablice i retke kroz phpmyadmin panel, ovo je već napredak Usput, želim napomenuti da je sučelje ovog panela intuitivno, tamo možete jednostavno gurnuti gumbe i shvatiti što je što

Vrijeme je da naučite kako stvoriti redove za brisanje i ažuriranje u kreiranim tablicama pomoću php-a. Kako biste bolje shvatili što vam govorim, napisat ćemo mali admin panel stranice, a usput ću vam reći što i kako.

Izlaz zapisa iz baze podataka

Počnimo s ovim, budući da prilikom izrade projekta morate vizualno vidjeti proces, a bez izlaza je to vrlo teško (radit ću s datotekom test.php, nemojte se iznenaditi kada vidite linkove na ovu datoteku u kodu). Kako ćemo se povući? Pa, prvo se moramo spojiti na bazu podataka, nakon do while petlje (Learn PHP - Loops) povući ćemo zapise iz baze podataka. Započnimo

  • Povezivanje baze podataka

Kako se uspostavlja veza? Pažnja na sintaksi:

mysql_select_db (DB ime, mysql_connect (Poslužitelj, DB korisničko ime, DB korisnička lozinka));

Ime baze podataka, korisnika poslužitelja i lozinku kreirate vi ili ih daje vaš hoster. Na primjer lokalni poslužitelj, neke podatke kreirate sami ili koristite one koji su već napravljeni. Ovako će izgledati veze s bazom podataka koju sam napravio:






// POVEZIVANJE NA BAZU PODATAKA (DB)

Poslužitelj, korisnik i lozinka kreirani su prema zadanim postavkama (u ovom slučaju možemo reći da nam gotovo sve podatke daje hoster). Iz svojih podataka samo sam naveo naziv baze podataka. Usput, ovo je php kod i stoga mora biti u posebnim zagradama ()

  • Izlaz podataka

Moramo prikazati podatke iz tablice stranica. Obratite pažnju na sintaksu izlaza:

$ result = mysql_query ("ODABIR za izdvajanje iz naziva tablice u bazu podataka");

Prvi red nam omogućuje da odredimo koje stupce trebamo izvući i iz koje baze podataka.

Drugi red stavlja sve što pronađe u varijablu...

PAŽNJA Postoji nekoliko točaka koje bih želio pojasniti. Riješimo nekoliko problema:

  • Moramo izvući sva polja sa stola.

Kako mogu izvući sva polja iz tablice stranica? kao ovo:

$ result = mysql_query ("SELECT * FROM page");
$ myrow = mysql_fetch_array ($ rezultat);

Možda ste primijetili da sam stavio zvjezdicu (*) nakon SELECT. Zvjezdica znači da moram izdvojiti sva polja iz tablice

  • Iz tablice trebamo izvući samo jedno polje

Kako povući samo tekstualno polje iz tablice? kao ovo:

$ rezultat = mysql_query ("ODABIR teksta SA stranice");
$ myrow = mysql_fetch_array ($ rezultat);

Da ne bi izvukli sva polja, nego samo neka, potrebno je iza SELECT navesti potrebna polja odvojena zarezima.

  • Moramo povući polja ne iz svih tablica, već samo iz jednog retka

Kako mogu izbaciti sva polja iz prvog retka? Znamo da prvi red ima id jednak jedan, upotrijebimo ovo znanje:

Nakon SELECT, objasnio sam koja polja treba izdvojiti, razdvojiti zarezima, a zatim dodao novi red WHERE (što znači "gdje") id je jednak 1. Dakle, izvlačim polja koja mi trebaju iz reda u kojem je id jedan

Pa, krenimo stvarati rezultate naših članaka? Prikazat ćemo samo zaglavlja, počnimo:


$ myrow = mysql_fetch_array ($ rezultat);

čini
{
echo "". $ myrow."
";
}

Što smo učinili? Iz tablice smo izvukli dva polja, id i naslov. Zatim smo pokrenuli do while petlju (Learning PHP - Loops) i formirali poveznice, koristeći podatke koji su izvučeni iz baze podataka. Podaci se pohranjuju u varijablu $ myrow, ova varijabla je niz, ključevi niza su nazivi naših polja u bazi podataka. Evo što se dogodilo:

Postoji izlaz zaglavlja, sada organizirajmo izlaz kompletnih poruka kada kliknete na link sa zaglavljem. Da biste to učinili u jednoj datoteci, dodajte uvjete if () ():

// POVEZIVANJE NA BAZU PODATAKA (DB)
$ nameDB = "phptest"; // Naziv baze podataka
$ nameSERVER = "localhost"; // Poslužitelj
$ nameUSER = "root"; // Korisničko ime baze podataka
$ passUSER = ""; // Lozinka korisnika baze podataka
mysql_select_db ($ nameDB, mysql_connect ($ nameSERVER, $ nameUSER, $ passUSER));
// POVEZIVANJE NA BAZU PODATAKA (DB)

// PRIKAZ ZAGLAVLJA
if (! isset ($ _ GET ["id"]))
{
$ result = mysql_query ("SELECT id, title FROM page");
$ myrow = mysql_fetch_array ($ rezultat);

čini
{
echo "". $ myrow."
";
}
dok ($ myrow = mysql_fetch_array ($ rezultat));
}
// PRIKAZ ZAGLAVLJA

// PRIKAŽI CIJELI TEKST
if (isset ($ _ GET ["id"]))
{

$ myrow = mysql_fetch_array ($ rezultat);

odjek $ myrow;
}
// PRIKAŽI CIJELI TEKST
?>

Dodao sam dva uvjeta. Vidjet ćemo popis sa zaglavljima samo ako globalna varijabla $ _GET ["id"] ne postoji. Cijeli ćemo tekst vidjeti samo ako ova varijabla postoji. U tom slučaju prikazat ćemo samo jedan zapis koji nam je potreban iz baze podataka. Evo što smo dobili:

Sada mislim da je vrijeme da naučite kako dodati nove retke u tablicu.

Dodavanje podataka u bazu podataka

Počnimo s dodavanjem stvaranjem obrasca, ovdje je dio koda koji treba dodati na kraj naše datoteke:

// OBRAZAC DODAJ ZAPISE
if (isset ($ _ GET ["add"]))
{
jeka "







";
}
// OBRAZAC DODAJ ZAPISE

Ovaj će se obrazac pojaviti samo ako postoji globalna varijabla $ _GET ["add"], tako da gdje-nit na dnu morate umetnuti vezu za dodavanje novog članka. Najbolji način da to učinite je u kodu za prikaz zaglavlja, također možete urediti uvjet za prikaz naših zaglavlja ovako:

// PRIKAZ ZAGLAVLJA
if (! isset ($ _ GET ["id"]) AND! isset ($ _ GET ["add"]))
{
$ result = mysql_query ("SELECT id, title FROM page");
$ myrow = mysql_fetch_array ($ rezultat);

čini
{
echo "". $ myrow."
";
}
dok ($ myrow = mysql_fetch_array ($ rezultat));

jeka "


Dodaj post ";
}
// PRIKAZ ZAGLAVLJA

Uredio sam uvjet na način da se popis zaglavlja ne pojavljuje kada se obrasca prikaže, evo što se dogodilo:

$ result = mysql_query ("INSERT INTO naziv tablice baze podataka (DB polje 1, DB polje 2) VRIJEDNOSTI (" podaci 1 "," podaci 2 ")");

Sada ćemo napisati rukovatelj za naš mini admin panel i sve ćete razumjeti. Evo dijela koda koji sam objavio odmah nakon povezivanja s bazom podataka:

// DODAJ ZAPISE

{

zaglavlje ("lokacija: test.php");
Izlaz;
}
// DODAJ ZAPISE

Uvjet je globalna varijabla $ _POST, odnosno, ako ispunimo obrazac, kliknemo na gumb "Dodaj objavu", tada će se naš uvjet pokrenuti. Polje naslova sadržavat će podatke iz globalne varijable $ _POST, a tekstualno polje - $ _POST. Zatim će raditi redak zaglavlja ("location: test.php"). Omogućuje vam preusmjeravanje korisnika na drugu stranicu, u ovom slučaju test.php će biti ova stranica. I izlaz iz linije; prekida izvršavanje drugih skripti. Evo što se dogodilo:

Uređivanje podataka u bazi podataka

Kako bismo uredili određeni zapis u našoj bazi podataka, naravno moramo odrediti koji zapis treba urediti... Predlažem da se gumb za uređivanje prikaže u izlaznom kodu punog teksta, uredimo ga:

// PRIKAŽI CIJELI TEKST
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("ODABIR teksta SA stranice GDJE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ rezultat);

odjek $ myrow;
jeka "


Uredi post";
}
// PRIKAŽI CIJELI TEKST


if (isset ($ _ GET ["edd"]))
{

$ myrow = mysql_fetch_array ($ rezultat);

Jeka "








";
}
// OBRAZAC UREDI ZAPIS

Dodao sam ovaj dio koda nakon obrasca za dodavanje zapisa. Ovaj obrazac je gotovo isti kao i dodavanje postova. Kao što vidite, preradio sam atribute imena i dodao atribut vrijednosti. U ovaj atribut stavljam podatke koje sam iznio iz baze podataka. Ovdje postoji i nevidljivo polje. Potreban je za slanje identifikatora zapisa u datoteku rukovatelja.

Sada, tako da kada se ovaj obrazac prikaže na ekranu nema popisa zaglavlja, ispravit ćemo uvjet:

// PRIKAZ ZAGLAVLJA

{
$ result = mysql_query ("SELECT id, title FROM page");
$ myrow = mysql_fetch_array ($ rezultat);

čini
{
echo "". $ myrow."
";
}
dok ($ myrow = mysql_fetch_array ($ rezultat));

jeka "


Dodaj post ";
}
// PRIKAZ ZAGLAVLJA

Vrijeme je da saznamo kako se uređuju zapisi u bazi podataka. Evo sintakse:

Sada napišimo rukovatelja. Evo dijela koda koji sam dodao odmah nakon dodavanja rukovatelja zapisima:

// UREĐIVANJE ZAPISA

{

zaglavlje ("lokacija: test.php");
Izlaz;
}
// UREĐIVANJE ZAPISA

Po uvjetu se vidi da će se handler pokrenuti samo ako kliknemo na gumb "uredi objavu". Zatim slijedi ažuriranje baze podataka. U polje naslova stavit ćemo vrijednost globalne varijable $ _POST a u tekstualno polje - $ _POST. Uredit ćemo redak čiji je id jednak globalnoj varijabli $ _POST. Zatim preusmjeravamo korisnika natrag na popis zaglavlja:

Brisanje zapisa iz baze podataka

Pa, zadnje što nam preostaje za proučavanje je brisanje.. Jednostavnije je od svih ostalih, pa obratite pažnju na sintaksu:

Da biste izbrisali neke zapise, potrebno je negdje u niti staviti link s kojim korisnik može izbrisati neki zapis... stavimo ovaj link u izlaz cijelog teksta posta:

// PRIKAŽI CIJELI TEKST
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("ODABIR teksta SA stranice GDJE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ rezultat);

odjek $ myrow;
jeka "


Uredi post";
jeka "
Izbriši post";
}
// PRIKAŽI CIJELI TEKST

Rezultat rada

Ovdje je kompletan kod za današnji post:

// POVEZIVANJE NA BAZU PODATAKA (DB)
$ nameDB = "phptest"; // Naziv baze podataka
$ nameSERVER = "localhost"; // Poslužitelj
$ nameUSER = "root"; // Korisničko ime baze podataka
$ passUSER = ""; // Lozinka korisnika baze podataka
mysql_select_db ($ nameDB, mysql_connect ($ nameSERVER, $ nameUSER, $ passUSER));
// POVEZIVANJE NA BAZU PODATAKA (DB)

// DODAJ ZAPISE
if (isset ($ _ POST ["title_post"]) I isset ($ _ POST ["text_post"]))
{
$ result = mysql_query ("INSERT INTO page (naslov, tekst) VRIJEDNOSTI (" $ _POST "," $ _ POST ")");
zaglavlje ("lokacija: test.php");
Izlaz;
}
// DODAJ ZAPISE

// UREĐIVANJE ZAPISA
if (isset ($ _ POST ["title_post_edd"]) I isset ($ _ POST ["text_post_edd"]))
{
$ rezultat = mysql_query ("AŽURIRAJ NASTAVAK stranice naslov =" (! LANG: $ _ POST", text="$_POST" WHERE id="$_POST"");!}
zaglavlje ("lokacija: test.php");
Izlaz;
}
// UREĐIVANJE ZAPISA

// IZBRIŠI ZAPISE
if (isset ($ _ GET ["del"]))
{
$ result = mysql_query ("IZBRIŠI SA stranice GDJE id =" $ _ GET "");
zaglavlje ("lokacija: test.php");
Izlaz;
}
// IZBRIŠI ZAPISE

// PRIKAZ ZAGLAVLJA
if (! isset ($ _ GET ["id"]) AND! isset ($ _ GET ["add"]) AND! isset ($ _ GET ["edd"]))
{
$ result = mysql_query ("SELECT id, title FROM page");
$ myrow = mysql_fetch_array ($ rezultat);

čini
{
echo "". $ myrow."
";
}
dok ($ myrow = mysql_fetch_array ($ rezultat));

jeka "


Dodaj post ";
}
// PRIKAZ ZAGLAVLJA

// PRIKAŽI CIJELI TEKST
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("ODABIR teksta SA stranice GDJE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ rezultat);

odjek $ myrow;
jeka "


Uredi post";
jeka "
Izbriši post";
}
// PRIKAŽI CIJELI TEKST

// OBRAZAC DODAJ ZAPISE
if (isset ($ _ GET ["add"]))
{
jeka "







";
}
// OBRAZAC DODAJ ZAPISE

// OBRAZAC UREDI ZAPIS
if (isset ($ _ GET ["edd"]))
{
$ result = mysql_query ("SELECT * FROM page WHERE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ rezultat);

Jeka "








";
}
// OBRAZAC UREDI ZAPIS
?>

Zaključak

Materijal se pokazao prilično kompliciranim. Ali! Možda ste primijetili da sam koristio samo informacije koje sam dao ranije. To znači da s tim znanjem možete kreirati najjednostavnije projekte u php-u! Ako ste sve ovo savladali, onda s ponosom možete izjaviti da ste programer početnik! Pa, sada možete početi stvarati svoj prvi cms. Ako imate pitanja, a najvjerojatnije ih ima, pitajte, pomoći ću vam koliko mogu! Sretno, imam sve za danas!

P.S.: Što je mdf datoteka? Kako ga otvoriti? Kako da ga otvorim? Na ova i mnoga pitanja možete odgovoriti na voprosi4ek.ru

Naučili smo kako se spojiti na MySQL poslužitelj, odabrati bazu podataka za rad, naučili PHP funkciju slanja upita na MySQL poslužitelj, naučili dva jednostavna upita (kreiranje i brisanje tablice) i naučili kako zatvoriti vezu.

Sada ćemo dublje proći u MySQL upite. Pa počnimo!

Izrada tablice - CREATE TABLE

Sada imamo praznu bazu podataka, u njoj nema tablica. Stoga prvo napravimo tablicu. Već iz prvog dijela znamo kako se to radi.

Evo koda skripte koji će stvoriti ploču koja nam je potrebna:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "KREIRAJ TABLE korisnika (prijava VARCHAR (20), lozinka VARCHAR (20))"; if (mysqli_query ($ link, $ query)) echo "Tablica je stvorena."; else echo "Tablica nije stvorena:" .mysqli_error (); mysqli_close ($ link);

U našoj tablici postoje samo dva polja: prijava i lozinka. Za sada nam više ne treba, nemojmo komplicirati proces.

Dakle, tablica je napravljena.

Dodavanje redaka (zapisa) u tablicu - INSERT

Možete dodati novi red u tablicu pomoću naredbe insert SQL. Evo primjera:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "INSERT INTO users (login, password) VALUE (" zeus "," pass123 ")"; if (mysqli_query ($ link, $ query)) echo "Korisnik je dodan."; else echo "Nije dodan korisnik:". mysqli_error (); mysqli_close ($ link);

SQL upit se sastoji od naredbe INSERT INTO, imena baze podataka korisnika, zatim naziva polja u zagradama, zatim riječi VALUE, nakon čega slijede dodane vrijednosti u zagradama. Vrijednosti su zatvorene u navodnicima.

Sintaksa zahtjeva izgleda ovako:

INSERT INTO table_name (stupac1, stupac2) VRIJEDNOST ("x1", "x2")

Navodnici u drugim zagradama su obavezni.

Varijable mogu biti umjesto vrijednosti. Evo primjera:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $login = "zeus"; $ lozinka = "pass123"; $ query = "INSERT INTO users (login, password) VALUE (" $ login "," $ password ")"; if (mysqli_query ($ link, $ query)) echo "Korisnik je dodan."; else echo "Nije dodan korisnik:". mysqli_error (); mysqli_close ($ link);

Naravno, ovaj primjer nema smisla. Početnicima bi moglo biti korisno čuti da se na taj način u bazu podataka bilježe prijave i lozinke koje korisnici daju prilikom registracije. Ti se podaci pohranjuju u varijablama, a zatim se nakon provjere zapisuju u bazu podataka.

Postoji brz način umetanje više redaka s jednim INSERT upitom:

UMETNI U korisnike (prijava, lozinka) VRIJEDNOST ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Kao što možete vidjeti, nabrojani su podaci jednostavno odvojeni zarezima.

Dakle, pomoću naredbe INSERT naučili smo kako dodati zapise u tablicu. Krenuti dalje.

Prikaz tablice: naredba SELECT

Sada imamo tablicu korisnika koja ima redove. Prethodna skripta može se pokrenuti više puta i svaki put će dodati red u tablicu. Sada možda ne znamo koliko redaka imamo u tablici. I želim znati što smo u njemu napisali.

Za dohvaćanje podataka iz tablice koristite naredbu SQL SELECT. Znak * znači da tražimo sve podatke, zatim iza riječi FROM upisujemo naziv tablice iz koje želimo primiti podatke.

Upitajmo sve podatke iz tablice korisnika:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "ODABIR * IZ korisnika"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ rezultat) echo "Dogodila se pogreška:". mysqli_error (); else echo "Podaci primljeni"; mysqli_close ($ link);

Funkcija mysqli_query () vratila nam je identifikator rezultata upita - stavili smo ga u varijablu i ubuduće ćemo s njom raditi koristeći druge PHP funkcije.

Broj zapisa u zahtjevu

Hajdemo shvatiti koliko redaka ima u našem upitu? Sam sam pokrenuo skriptu za dodavanje zapisa u tablicu, ne sjećam se koliko puta i sada ne znam koliko redaka ima u mojoj tablici.

Funkcija mysqli_num_rows () koristi se za određivanje broja redaka u rezultatu upita. Ovoj funkciji prosljeđuje se identifikator rezultata upita i vraća broj zapisa.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ link) die ("Pogreška"); $ query = "ODABIR * IZ korisnika"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ rezultat) echo "Dogodila se pogreška:". mysqli_error (); else echo "Podaci primljeni"; $ count = mysqli_num_rows ($ rezultat); echo "Ukupan broj redaka u tablici: $ count."; mysqli_close ($ link);

Ako trebamo saznati broj zapisa u tablici, onda navedena metoda nije najprikladnija. Ovdje smo saznali broj zapisa pronađenih u upitu, ali se broj zapisa u tablici pretražuje drugačije.

Broj zapisa u tablici SELECT COUNT (*)

Da biste saznali broj zapisa u tablici, možete koristiti naredbu SELECT COUNT (*) FROM table_name.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ query = "ODABIR * IZ korisnika"; $ rezultat = mysqli_query ($ veza, $ upit); if (! $ rezultat) echo "Dogodila se pogreška:". mysqli_error (); else echo "Podaci primljeni."; $ count = mysqli_fetch_row ($ rezultat); echo "Ukupan broj redaka u tablici: $ count."; mysqli_close ($ link);

Napominjemo da smo ovdje koristili novi PHP funkcija mysqli_fetch_row () za dobivanje podataka. Ova funkcija vraća redak rezultata upita u obliku jednostavnog niza, u našem slučaju postoji jedno polje u retku i ima indeks 0.

Pregled rezultata upita u petlji

Nakon što izvrši SQL upit s naredbom SELECT i dobije identifikator rezultata upita, PHP stvara interni pokazivač u skupu zapisa rezultata. Ovaj se pokazivač automatski pomiče na sljedeći zapis nakon upućivanja na trenutni zapis. Ovaj mehanizam vrlo lako čini petlju kroz skup rezultata SELECT upita.

PHP ima nekoliko funkcija koje se mogu koristiti za dobivanje niza koji se sastoji od njegovih polja za svaki redak rezultirajućeg upita. Uzmimo za primjer funkciju mysqli_fetch_row (). Ovoj funkciji prosljeđuje se ID zahtjeva i vraća niz. Dakle, u petlji se skenira cijeli rezultat upita; kada dođe do kraja rezultata upita, funkcija će vratiti false.

Dakle, tražimo sve podatke iz tablice korisnika (SELECT * FROM users).


"; while ($ red = mysqli_fetch_row ($ rezultat)) (echo" Prijava: $ red. Lozinka: $ red.
";) mysqli_close ($ link);

Mysqli_fetch_row () vraća jednostavan niz. U svakoj iteraciji petlje dobit ćemo niz s redom iz tablice, čijim poljima možemo pristupiti navođenjem numeričkog indeksa.

Isto se može učiniti pomoću funkcije mysql_fetch_assoc (), ona vraća asocijativni niz.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ rezultat = mysqli_query ($ veza, "ODABIR * IZ korisnika"); if (! $ rezultat) echo "Dogodila se pogreška:". mysqli_error (); else echo "Podaci primljeni.
"; while ($ red = mysqli_fetch_assoc ($ rezultat)) (echo" Prijava: $ red. Lozinka: $ red.
";) mysqli_close ($ link);

Tu su i funkcije mysqli_fetch_array () - vraća bilo koju vrstu polja i mysqli_fetch_object () - vraća objekt.

SELECT DISTINCT Query - Jedinstvene vrijednosti polja

Kreirajmo novu tablicu:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); // ispusti postojeću tablicu mysqli_query ($ link, "DROP TABLE users"); // kreiraj novu tablicu $ query = "STVORI TABLE korisnika (ime VARCHAR (20), prezime VARCHAR (20), dob TINYINT UNSIGNED)"; if (mysqli_query ($ link, $ query)) echo "Tablica je kreirana.
"; else echo" Tablica nije kreirana: ". mysqli_error (); // funkcija za dodavanje zapisa u tablicu funkcija add_new_line ($ link, $ query) (if (! mysqli_query ($ link, $ query)) echo" Korisnik nije dodano : ". mysqli_error ();) // dodaj zapise add_new_line ($ link," INSERT INTO korisnike (ime, prezime, dob) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , "INSERT INTO users (ime, prezime, dob) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ link, "INSERT INTO users (ime, prezime, dob) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($ link," INSERT INTO users (ime, prezime, dob) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ link, " INSERT INTO users (ime, prezime, dob) VALUE ("Serg", "Borman", "43") "); add_new_line ($ link," INSERT INTO users (ime, prezime, dob) VALUE ("Max", " Lopes "," 21 ")"); // prikaz sadržaja tablice u pregledniku $ result = mysqli_query ($ link, "SELECT * FROM users"); if (! $ Result) echo "Dogodila se pogreška: ". Mysqli_error (); else echo "Podaci primljeni.
"; while ($ row = mysqli_fetch_assoc ($ rezultat)) (echo" Ime: $ red. Prezime: $ red. Dob: $ red.
";) mysqli_close ($ link);

Dakle, imamo novu, složeniju tablicu s jedinstvenim zapisima. Sada da vidimo koliko imena imamo u bazi podataka.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); $ rezultat = mysqli_query ($ veza, "ODABIR DISTINCT ime IZ korisnika"); echo "Ukupna imena:". mysqli_num_rows ($ rezultat)."
"; echo" Popis imena:
"; while ($ name = mysqli_fetch_row ($ rezultat)) (echo" $ name
";) mysqli_close ($ link);

SQL upit "SELECT DISTINCT name FROM users" vratio je rezultat sa svim jedinstvenim imenima u našoj tablici. Svaki jedinstveni naziv u novom retku u rezultatu upita.

Sortiranje rezultata - ORDER BY

Dodavanjem naredbe ORDER BY SQL upitu sortiramo rezultat upita uzlaznim redoslijedom (brojevi i slova abecednim redoslijedom). Evo primjera u kojem možete usporediti uobičajeni upit i sortirati prema dobi (polje dobi).



";) echo" Poredaj po dobi:
"; $ rezultat = mysqli_query ($ link," SELECT * FROM korisnika ORDER BY "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ line. Prezime: $ line. Dob: $ crta.
";) mysqli_close ($ link);

Polje dobi u naredbi ORDER BY možete zamijeniti poljem imena i vidjeti rezultat.

Za sortiranje rezultata upita obrnutim redoslijedom koristite naredbu ORDER BY DESC DESC.

Podudarni uvjet - GDJE

Dodavanjem naredbe WHERE u SQL upit, upitat ćemo samo one zapise koji odgovaraju uvjetu. Na primjer, napravimo zahtjev za osobe mlađe od 30 godina.

Da biste to učinili, koristite SQL upit "SELECT * FROM users WHERE age

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Ljudi ispod 30 godina:
"; $ rezultat = mysqli_query ($ veza," SELECT * FROM korisnika WHERE age<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close ($ link);

Također možemo odmah poredati rezultat uzlaznim redoslijedom prema dobi:
"ODABIR * OD korisnika WHERE dobi<30 ORDER BY age ".

Ako postavimo upit "ODABIR ime FROM korisnika WHERE age<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Možemo tražiti vrijednosti dvaju polja: "ODABIR ime, dob FROM korisnika WHERE age

Sada pitajte za sve korisnike pod imenom "Max".

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Svi Max:
"; $ rezultat = mysqli_query ($ link," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ red. Prezime: $ red. Dob: $ linija.
";) mysqli_close ($ link);

I još jedan primjer upita - odabrat će samo imena iz tablice korisnika, sve osim Maxa.

SELECT ime FROM korisnika WHERE name! = "Max"

To je sve s klauzulom WHERE.

Ograničenje zapisa - LIMIT

Dodavanjem naredbe LIMIT u SQL upit, ograničit ćemo veličinu rezultata.

Upit koji ispisuje prva tri zapisa: "SELECT * FROM users LIMIT 3". Pogledajmo kako to radi:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ rezultat = mysqli_query ($ veza," SELECT * FROM korisnika "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ red. Prezime: $ red. Dob: $ linija.
";) jeka"

Prva tri unosa:
"; $ rezultat = mysqli_query ($ link," SELECT * FROM users LIMIT 3 "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ line. Prezime: $ line. Dob: $ line .
";) jeka"

Druga tri unosa:
"; $ rezultat = mysqli_query ($ link," SELECT * FROM users LIMIT 3, 3 "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ line. Prezime: $ line. Dob: $ linija ...
";) mysqli_close ($ link);

Također ovdje smo koristili upit: "SELECT * FROM users LIMIT 3, 3". Drugi triplet označava pomak u rezultatu upita.

Pattern Match - LIKE

SQL jezik podržava jednostavne obrasce. Za to se koristi naredba LIKE i uzorak se specificira pomoću % znaka.

Evo primjera upita koji će vratiti sve zapise s imenima koja počinju na slovo S.

SELECT * FROM korisnika GDJE ime KAO "S%"

Testiranje zahtjeva:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ rezultat = mysqli_query ($ veza," SELECT * FROM korisnika "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ red. Prezime: $ red. Dob: $ linija.
";) jeka"

Imena koja počinju na S:
"; $ rezultat = mysqli_query ($ veza," SELECT * FROM korisnika GDJE ime KAO "S%" "); dok ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ red. Prezime: $ line Dob: $ linija.
";) mysqli_close ($ link);

Ovdje je primjer upita koji će vratiti sve zapise s prezimenima koja završavaju slovom s.

SELECT * FROM korisnika GDJE ime KAO "% s"

Odgovarajući uvjet - IN

Ovaj upit pomoću naredbe IN vratit će samo one retke koji se striktno podudaraju s uvjetom.

Na primjer, zanimaju nas osobe od 21, 26 i 33 godine.

ODABIR * IZ korisnika WHERE dob U (21,26,33)

Testiranje zahtjeva:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ link) die ("Pogreška"); mysqli_select_db ("tester"); echo "Sadržaj tablice:
"; $ rezultat = mysqli_query ($ veza," SELECT * FROM korisnika "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ red. Prezime: $ red. Dob: $ linija.
";) jeka"

Osobe tražene dobi (21, 26, 33):
"; $ rezultat = mysqli_query ($ link," SELECT * FROM users WHERE age IN (21, 26, 33) "); while ($ line = mysqli_fetch_row ($ rezultat)) (echo" Ime: $ line. Prezime : $ linija Dob: $ linija.
";) mysqli_close ($ link);

Maksimalna i minimalna vrijednost u stupcu

Odabire maksimalnu vrijednost dobi u tablici korisnika.

ODABERI maks. (dob) IZ korisnika

Sljedeći upit odabire podatke iz tablice korisnika pomoću polja imena i dobi, gdje je dob minimalna vrijednost.

SELECT ime, min (dob) FROM korisnika

Ažuriranje zapisa - UPDATE

Neka Max Lopes postavi dob na 15 godina. Ovo se radi pomoću MySQL upita:

AŽURIRAJ korisnike POSTAVI dob = "15" GDJE ime = "Maksimalno" I prezime = "Lopes"

Obratite pažnju na novu naredbu AND (i - na engleskom znači "i") u upitu. Ako ne navedemo prezime, tada će se za sve Maxe u tablici postaviti dob od 15 godina.

Jedan upit može ažurirati dva ili više polja u jednom retku. To se radi na sljedeći način:

UPDATE korisnika POSTAVI dob = "18", prezime = "Coocker" WHERE id = "3"

Naša tablica nema polje id, tako da ovaj upit neće raditi na njoj. Ali svakako ćemo naučiti ovo polje koje sadrži jedinstvene brojeve redaka.

Izbriši zapis - IZBRIŠI

Upit MySQL baze podataka za brisanje zapisa:

IZBRIŠI IZ korisnika WHERE id = "10"

Opet, u našoj tablici nema polja id. Ali iz njega možemo ukloniti sve osobe mlađe od 18 godina.

IZBRIŠI IZ korisnika WHERE dobi< "18"

ISPUSTI STOL

Upit MySQL baze podataka koji briše cijelu tablicu korisnika:

DROP TABLE korisnika

Ispuštanje stupca - ALTER TABLE ... DROP ...

Ponekad ćete možda morati izbrisati stupac iz tablice, na primjer, uklonite stupac dobi iz korisnika:

ALTER TABLE korisnici DROP dob

Ovaj MySQL upit trajno je i neopozivo izbrisao stupac.

Dodaj stupac - ALTER TABLE ... DODAJ ...

Ponekad biste mogli htjeti dodati stupac postojećoj tablici, na primjer, dodajmo stupac dobi ponovo u tablicu korisnika:

Korisnici ALTER TABLE ADD age TINYINT UNSIGNED

Preimenovanje stupca - ALTER TABLE ... CHANGE ...

Ponekad će možda biti potrebno preimenovati stupac, na primjer preimenovati stupac dobi u vozrast. Mi to radimo ovako:

ALTER TABLE korisnici CHANGE age vozrast TINYINT UNSIGNED

Ovaj MySQL upit preimenovao je stupac starosti u vozrast s tipom podataka TINYINT UNSIGNED.

Preimenovanje tablice - PREIMENOVANJE TABLE ... U ...

Ponekad će možda biti potrebno preimenovati tablicu:

PREIMENUITE TABLE korisnike NA ljude

Ispuštanje baze podataka - DROP DATABASE

Ovaj upit može ispustiti bazu podataka pomoću testera imena:

DROP DATABASE tester

Izrada baze podataka - CREATE DATABASE

Ovaj upit stvara bazu podataka pod nazivom tester:

KREIRANJE BAZE PODATAKA tester

Ovaj zahtjev radi za mene u Denveru, ali na hostingu možda neće raditi ako korisnik baze podataka nema dopuštenje za brisanje.

Ishodi

Dakle, u ovom dijelu smo se upoznali s upitima prema MySQL-u. Mnogi zahtjevi koje smo razmotrili nisu nam često korisni u procesu rada, ali ih morate znati jer će vam svakako dobro doći u procesu izrade skripti.

Neki se zahtjevi obično postavljaju samo iz phpMyAdmin-a (na primjer, stvaranje i brisanje baza podataka).

U radu web-mjesta obično trebate dodati zapis u tablicu, urediti zapis ili izbrisati zapis iz tablice.

Sljedeći korak je istraživanje MySQL tipova podataka.

Nakon instalacije i konfiguracije MySQL baze podataka, možete početi pisati PHP skripte za interakciju s bazom podataka. Ovaj članak opisuje sve osnovne funkcije koje vam omogućuju prijenos podataka naprijed-natrag s web-mjesta u bazu podataka.

Nije važno koliko su vaše skripte jednostavne ili složene, sve dok razgovaraju s bazom podataka, počinju s nekoliko istih stvari:

  1. Povezivanje s instaliranom MySQL bazom podataka.
  2. Korištenje naredbe USE protiv željene MySQL baze podataka.
  3. Slanje SQL-a u bazu podataka.
  4. Dobivanje rezultata.
  5. Obrada rezultata.

Koraci 3, 4 i 5 će se razlikovati ovisno o prirodi posla koji se izvodi. Skripta koja stvara tablice malo se razlikuje od skripte koja pretražuje postojeće tablice. Ali prva dva koraka - povezivanje s MySQL-om i korištenje ispravne baze podataka - uvijek su ista, bez obzira na svrhu skripte.

Povezivanje s MySQL bazom podataka

Prvo morate svojoj PHP skripti reći kako se povezati s bazom podataka. Ovaj proces u biti govori PHP-u da radi točno ono što ste učinili kada ste započeli s MySQL klijentom naredbenog retka. Za povezivanje s bazom podataka, PHP će trebati proslijediti sljedeće informacije: ime hosta vaše baze podataka, korisničko ime, lozinku i naziv baze podataka.

Za povezivanje s bazom podataka koristit ćemo PDO - PHP Data Objects. Kada ga koristite, ne možete se bojati, to je moguće zahvaljujući pripremljenim parametrima, ali o tome kasnije.

To je važno! Ako na internetu nađete lekciju gdje će se koristiti mysqli_connect ili mysql_connect - slobodno je zatvorite, kako su napisali prije 10 godina.

Da biste stvorili vezu, morate stvoriti novi objekt klase PDO. Kao argumente konstruktoru, trebate proslijediti DSN - ovo je niz koji označava drajver (u našem slučaju, mysql), ime hosta i baze podataka. Drugi argument je korisničko ime (u našem slučaju root). Treća je lozinka (u našem slučaju prazna).

Prije lekcije kreirao sam bazu podataka korisnika, a u njoj tablicu s podacima sljedeće strukture:

CREATE TABLE `podaci` (` id` int (11) NOT NULL AUTO_INCREMENT, `name` varchar (32) DEFAULT NULL,` year` char (4) DEFAULT NULL, PRIMARY KEY (id)) ENGINE = InnoDB DEFAULT CHARSET = utf8 ; $ dbh = novi \ PDO ("mysql: host = localhost; dbname = korisnici;", "root", "");

Prvi korak nakon povezivanja je postavljanje kodiranja:

$ dbh-> exec ("SET NAMES UTF8");

Nakon toga možemo izvršavati zahtjeve. izgleda ovako:

$ stm = $ dbh-> pripremiti ("INSERT INTO data (`name`, `year`) VALUES (:name,: year)"); $ stm-> bindValue ("ime", "ime"); $ stm-> bindValue ("godina", "1703"); $ stm-> izvršiti ();

Prvo kreiramo pripremljeni zahtjev - on još nije izvršen. Imajte na umu da smo umjesto vrijednosti naveli: ime i: godina - ovo su parametri u koje će se zamijeniti vrijednosti navedene u sljedeća dva retka. Na kraju pozivamo execute () - zapravo, izvršimo rezultirajući zahtjev.

Pokrenimo ovu skriptu i pogledajmo što se pojavilo u bazi podataka.

Ažurirajmo skriptu još nekoliko puta i ponovno pogledajmo bazu podataka.

Dohvaćanje iz baze podataka pomoću PHP-a

Pročitajmo sada podatke koje smo napisali. Shema je ista, samo što pripremamo SELECT upit.

$ stm = $ dbh-> pripremiti ("SELECT * FROM` data` "); $ stm-> izvršiti ();

Zahtjev je ispunjen, ali to nije sve. Sada morate dobiti rezultat. To se radi ovako:

$ allUsers = $ stm-> fetchAll (); var_dump ($ allUsers);

Kao rezultat, dobivamo niz ovih zapisa:

Prikažimo ih ljepše, dodajmo malo HTML-a.

$ stm = $ dbh-> pripremiti ("SELECT * FROM` data` "); $ stm-> izvršiti (); $ allUsers = $ stm-> fetchAll (); ?>

iskaznicaImeGodina

Pa to je sasvim druga stvar!

Ako trebate dodati neke parametre u SELECT upit, to se radi na isti način:

$ stm = $ dbh-> pripremiti ("SELECT * FROM` data` WHERE id =: id "); $ stm-> bindValue ("id", 1); $ stm-> izvršiti (); $ korisnici = $ stm-> dohvatiAll (); var_dump ($ korisnika);

Sada će se vratiti samo jedan korisnik, koji odgovara uvjetima zahtjeva.

U ovom ćemo članku na primjerima analizirati tako važne točke u radu s MySQL bazama podataka (DB), kao što su dohvaćanje iz baze podataka, upisivanje u bazu podataka, ažuriranje informacija u bazi, kao i brisanje iz baze podataka. Sve će se to učiniti pomoću četiri naredbe SELECT, INSERT, UPDATE i DELETE, o kojima će biti riječi u ovom članku.

Dakle, ako trebate izvući sva polja iz baze podataka, upotrijebite sljedeći kod.

$ rezultat = mysql_query ("SELECT * FROM first_table", $ db);

Zvjezdica znači da morate povući sva polja iz tablice.

Ako trebate izvući samo neka od polja, na primjer ime i prezime.

$ rezultat = mysql_query ("ODABIR ime, prezime iz prve_tablice", $ db);

ime, prezime - polja s imenima i prezimenima korisnika.

Ako trebate dobiti točne podatke, na primjer, prezime svih korisnika u bazi podataka s određenim imenom (ime će se unijeti u varijablu $ name).

name = '$ name' - polje imena jednako je varijabli $ name.

Osim jednog uvjeta, možemo navesti i nekoliko, na primjer, potrebno je dobiti identifikator svih korisnika s određenim imenom i prezimenom (ime i prezime će se unijeti u varijable $name i $ last_name, redom) . Za to možemo koristiti sljedeći kod.

Ako trebamo dobiti zapise gdje je ispunjen jedan od nekoliko uvjeta, na primjer, da dobijemo identifikatore svih korisnika čije ime ili prezime odgovara onima navedenim u uvjetima.

Ako trebate sortirati rezultat po nekim parametrima, na primjer, po imenu.

$ rezultat = mysql_query ("SELECT * FROM first_table ORDER BY name", $ db);

ORDER BY name - sortiraj po imenu.

Ako trebate sortirati obrnutim redoslijedom.

$ rezultat = mysql_query ("SELECT * FROM first_table ORDER BY name DESC", $ db);

DESC - obrnutim redoslijedom.

Ako trebate povući samo određeni broj polja iz baze podataka. Na primjer, morate izvući prvih pet polja.

$ rezultat = mysql_query ("SELECT * FROM first_table ORDER BY id LIMIT 5", $ db);

LIMIT 5 - izvući samo prvih pet rezultata iz baze podataka.

Ovo su bili mali primjeri uzorka iz baze podataka. Pogledajmo sada kako pretvoriti rezultirajući rezultat u niz za daljnju upotrebu, na primjer, za prikaz rezultata na zaslonu. Za to PHP ima poseban mysql_fetch_array ().

Rezultat izvršenja funkcije možemo staviti u varijablu, na primjer, varijablu $ myrow, koja će biti pohranjena sama u sebi. Kao parametar funkcije mysql_fetch_array () bit će proslijeđen rezultat izvršenja funkcije mysql_query ()... Sve će izgledati ovako.

$ myrow = mysql_fetch_array ($ rezultat);

Sada možemo pristupiti elementima asocijativnog niza $ myrow. Kao primjer, pogledajmo kod koji prikazuje korisničko ime s id = 1. Baza podataka db_first iz prethodnog članka koristit će se kao baza podataka.

/ * Povežite se s bazom podataka * / $ db = mysql_connect ("MySQL poslužitelj", "Korisnik baze podataka", "Lozinka za pristup bazi podataka"); mysql_select_db ("db_name", $ db); / * Izrađujemo upit bazi podataka * / $ rezultat = mysql_query ("SELECT name FROM first_table WHERE id =" $ id "", $ db); / * Pretvorite rezultat u niz * / $ myrow = mysql_fetch_array ($ rezultat); / * Ispis rezultata na zaslon * / echo $ myrow ["name"];

Kao što vidite, sve je vrlo jednostavno i jasno.

Sada prijeđimo na sljedeći INSERT izraz, koji je odgovoran za dodavanje informacija bazi podataka.

Dodavanje informacija u bazu podataka. INSERT izjava

Naredba INSERT koristi se za dodavanje informacija bazi podataka. Kôd odgovoran za dodavanje ima sljedeću sintaksu.

$ result = mysql_query ("INSERT INTO table (polje 1, polje 2, polje N) VRIJEDNOSTI (" vrijednost 1 "," vrijednost 2 "," vrijednost N ")");

Na primjer, trebamo dodati ime i prezime novog korisnika u first_table. Za to možete koristiti sljedeći kod.

$ result = mysql_query ("INSERT INTO first_table (ime, prezime) VALUES (" $ name "," $ last_name ")");

Gdje su $name i $ last_name varijable s imenom i prezimenom novog korisnika.

Možete koristiti za provjeru rezultata.

$ result = mysql_query ("INSERT INTO first_table (ime, prezime) VALUES (" $ name "," $ last_name ")"); if ($ rezultat == "true") (echo "Zapis je uspješno dodan!";) else (echo "Zapis nije dodan!";)

Drugim riječima, ako varijabla $ result postane istinita, tada će se prikazati poruka da je zapis dodan. U suprotnom će se činiti da zapis nije dodan u bazu podataka.

Ažuriranje informacija u bazi podataka. Izjava UPDATE

Naredba UPDATE koristi se za ažuriranje postojećih informacija u bazi podataka. Sintaksa za funkciju mysql_query u ovom slučaju je sljedeća.

A sada prijeđimo na primjer. Recimo da trebamo promijeniti ime i prezime za korisnika s identifikatorom $ id u tablici db_name. Za to možete koristiti sljedeći kod.

Prijeđimo sada na završni dio članka i bacimo pogled na posljednju izjavu DELETE koja je odgovorna za brisanje informacija iz baze podataka.

Uklanjanje informacija iz baze podataka. Izjava DELETE

Naredba DELETE se koristi za brisanje polja iz baze podataka. Sintaksa za funkciju mysql_query () u ovom slučaju je sljedeća.

Sada, kao i obično, prijeđimo na primjer. Recimo da trebamo izbrisati korisnika s $ id-om iz tablice db_name. Za to možete koristiti sljedeći kod.

Ovim je ovaj članak završen. Materijal nije težak, ali ga je prilično teško objasniti kroz tekst. Ipak, mislim da shvaćate poantu gornjeg materijala. Ako još uvijek imate pitanja o ovom članku, uvijek ih možete postaviti u komentarima.

To je sve. Sretno i uspjeh u učenju PHP-a i MySQL-a.