MySQL traži primjere u PHP-u. SQL - Zahtjevi i njihova obrada pomoću PHP-a

Rad sa MySQL bazom podataka sa RNR-om

Predavanje. Pripremljeni Prokhorov vs


1. Spajanje PNP scenarija sa MySQL tablicama

Razmislite o najčešće korištenim funkcijama koje omogućuju rad sa MySQL bazom podataka od strane RNR-a.

Kada RNR i MySQL interakcije, program interakcije sa DBMS pomoću skupa funkcija.

1.1 Priključak na server. Funkcijamysql_connect.

Prije rada sa bazom podataka morate instalirati s njim mrežna veza, kao i provoditi autorizaciju korisnika. Ovo je funkcija mysql_connect ().

resource mysql_connect (]])

Ova funkcija postavlja mrežnu vezu na MySQL bazu podataka koja se nalazi na $S $ poslužiteljskom domaćinu (zadano je lokalnoj, I.E. Trenutno računalo) i vraća identifikator otvorene veze. Svi daljnji rad se izvodi s ovim identifikatorom. Sve ostale funkcije koje povode ovaj identifikator (deskriptor) kao argument jedinstveno definiraju odabranu bazu podataka. Prilikom registracije, korisničko ime je $ korisničko ime i $ lozinka za lozinku (prema zadanim postavkama, korisničko ime iz koje se teče trenutni proces - prilikom uklanjanja pogrešaka: korijen i prazna lozinka):

$ dbpasswd \u003d ""; // lozinka

// prikazati upozorenje

echo ("

");

Varijable $ dblocation, $ dbuser i $ dbpasswd naziv trgovine poslužiteljem, korisničko ime i lozinku.

1.2 Tarve vezu sa serverom. Funkcijamysql_close

Veza s MySQL serverom automatski će se zatvoriti na kraju skripte ili prilikom pozivanja MySQL_CLOSE funkcije

bool mysql_close ()

Ova značajka prekida vezu s MySQL serverom i vraća se istinite s uspješnim izvršavanjem operacije i lažno u suprotnom. Funkcija prihvaća deskriptor za vezu baze podataka kao argument koji je vraćen Funkcija MySQL_Connect.

$ dblocation \u003d "localhost"; // Naziv servera

$ dbuser \u003d "root"; // korisničko ime

$ dbpasswd \u003d ""; // lozinka

// Unesite vezu na poslužitelj baze podataka

// suzbijaju simbol izlazne pogreške @ prije poziva funkcije

$ dbcnx \u003d @ mysql_connect ($ dblocation, $ dbuser, $ dbpaswd);

ako (! $ dbcnx) // ako je deskriptor 0, veza nije instalirana

// prikazati upozorenje

echo ("

B. trenutno Poslužitelj baze podataka nije dostupan, tako da tačan prikaz stranice nije moguć.");

ako (mysql_close ($ dbcnx)) // prekinuti vezu

echo ("Veza na bazu podataka je prekinuta");

echo ("uspio je dovršiti vezu");

1.3 Stvaranje baze podataka. Kreirajte funkciju baze podataka

Naredba - Stvaranje baze podataka dostupna je samo administratoru poslužitelja, a na većini hostinga nemoguće je izvesti:

Kreirajte naziv baze podataka na bazi baze podataka

Stvara novu bazu podataka s nazivom vezivanja imena.

Primjer rada s ovom značajkom:

@Mysql_query ("Kreirajte bazu podataka $ dbname");

Preporučuje se korištenje apostrofe svuda ("SQL - naredba") kao ograničenja linija koje sadrže SQL naredbe. To može osigurati da neće se slučajno interpolirati varijabla (I.E. neće se zamijeniti njenom vrijednošću), a sigurnost skripti će se povećati.

Naredba za bazu podataka o Create Database dostupna je samo superuser-u i nemoguće je izvesti jednostavan korisnik na većini korisnika hostinga. Dostupan je samo administratoru poslužitelja.

Za eksperimente stvorite bazu podataka testbase izvođenjem SQL upita iz naredbene linije. Da biste to učinili, prijavite se u MySQL sistem i unesite u naredbena linija MySQL:

mySQL\u003e Kreirajte test bazu podataka;

Nakon toga bi trebali birati:

mySQL\u003e Koristite testbase;

Baza podataka je kreirana:


1.4 Odaberite bazu podataka. Funkcijamysql_select_db.

Prije slanja prvog zahtjeva MySQL serveru morate navesti koju bazu podataka idemo na posao. U tu svrhu je MySQL_Select_DB funkcija namijenjena:

bool mysql_select_db (string $ baza podataka_name [, resurs $ link_identifier]))

Obavještava PHP da će u daljnjim operacijama s $ Link_identifier veza koristiti $ baza podataka.

Korištenje ove funkcije ekvivalentna je pozivanju naredbe za upotrebu u SQL upitu, I.E. MySQL_Select_DB funkcija Odabir baze podataka za daljnji rad, a svi naredni SQL upiti primjenjuju se na odabranu bazu podataka. Funkcija uzima ime baze podataka Ime odabrane baze podataka kao argumente i deskriptor za povezivanje resursa. Funkcija vraća istinu sa uspješnim radom i lažnim - u suprotnom:

// Kod povezivanja s bazom podataka

ako (! @mysql_select_db ($ dbname, $ dbcnx))

// prikazati upozorenje

echo ("

B Sada baza podataka nije dostupna, tako da tačan prikaz stranice nije moguć.");

1.5 Pogreške obrade

Ako se greške pojave tokom rada sa MySQL-om (na primjer, upita nisu uravnoteženi ili nema dovoljno parametara), tada se poruka o pogrešci i njen broj mogu dobiti pomoću dvije funkcije opisane u nastavku.

Važno je pažljivo i koristiti ove funkcije pravovremeno, jer u protivnom uklanjanje skripta može postati složenije.

● Funkcija:

int mysql_errno ()

vraća broj najnovije snimljene greške. Ne možete odrediti $ Link_identFier identifikator veze ako je samo jedna veza instalirana tokom vremena za pokretanje skripte.

● Funkcija:

string mysql_error ()

vraća ne broj, već niz koji sadrži tekst poruke o pogrešci. Prikladno je primijeniti u svrhu uklanjanja pogrešaka. Obično se MySQL_Error koristi sa dizajnom ili umirom (), na primjer:

@Mysql_connect ("Localhost", "Korisnik", "Lozinka")

ili umrijeti ("Pogreška koja se povezuje na bazu podataka:" .mysql_error ());

Operator @, kao i obično, koristi se za suzbijanje standardnog upozorenja, koji se može pojaviti u slučaju pogreške.

U nedavne verzije RNR upozorenje u MySQL funkcijama ne registruju se prema zadanim postavkama.

1.6 Veza sa MySQL-om. Datoteka (config.php.)

Obično na mjestu nalazi se nekoliko skripti odjednom, za koje vam je potreban pristup istoj bazi podataka.

Kod odgovoran za povezivanje s MySQL-om preporučuje se dodijeliti u odvojena datotekaa zatim se povežite pomoću funkcije Uključi potrebne skripte.

Ima smisla postavljati funkcije za povezivanje, odabir i kreiranje baze podataka u istoj datoteci (config.php), gdje su varijable proglašene nazivom $ DBlocation poslužitelja, korisničko ime $ dbuserwwd i naziv Ime baze podataka $ DBNAME:

Config.php Oglas:

//config.php kôd datoteke koji sadrži parametre veze sa serverom i odabirom baze podataka

// Prikazuje poruke o grešci na pretraživač

$ dblocation \u003d "localhost"; // Naziv servera

$ dbName \u003d "Umetnite naziv baze" // Naziv baze podataka: stvorena ili već postojeća

$ dbuser \u003d "root"; // Korisničko ime baze podataka

$ dbpasswd \u003d ""; // lozinka

// Unesite vezu na poslužitelj baze podataka

// suzbijaju simbol izlazne pogreške @ prije poziva funkcije

[Zaštićen e-poštom]_Connect ($ dblocation, $ dbuser, $ dbpasswd);

ako (! $ DBCNX) // Ako je deskriptor 0, veza s poslužiteljem baze podataka nije instalirana

// prikazati upozorenje

echo ("

Trenutno poslužitelju baze podataka nije dostupan, tako da je tačan prikaz stranice nemoguć.

");

// Stvorite bazu podataka $ dbName - može učiniti samo superuser

// ako baza podataka već postoji, postojat će nekritična greška

@Mysql_query ("Kreirajte bazu podataka ako ne postoji $ dbname ');

// Kod povezivanja s bazom podataka: Izvodimo nedvosmislen izbor novostvorene baze podataka ili postojeće baze podataka

// suzbijaju simbol izlazne pogreške @ prije poziva funkcije

ako ( [Zaštićen e-poštom]_select_db ($ dbname, $ dbcnx)) // Ako je deskriptor 0, veza baza podataka nije instalirana

// prikazati upozorenje

echo ("

Trenutno baza podataka nije dostupna, tako da je tačan prikaz stranice nemoguć.

");

// mali pomoćna funkcijakoji prikazuje poruku

// O pogrešci u slučaju pogreške u bazi podataka

funkcija PutError ($ Poruka)

echo ("");


2. Izvršite upite baza podataka

2.1 Stvaranje tablice. Funkcija Kreirajte tablicu:

Kreirajte naziv tablice tablice (tip PUTPOLE, tip PUTPOLE,))

Ova naredba u bazi podataka stvara novu tablicu s stupovima (polja), definirana vlastitim imenima (imenima) i određenim vrstama. Nakon kreiranja tablice, bit će moguće dodati zapise koje se sastoje od polja navedenih u ovoj naredbi.

Listing test_11.php. Program koji stvara novu tablicu u bazi podataka:

uključuju "config.php"; // povezati se s serverom i odabirom baze podataka

mysql_query ("Kreirajte tablicu ako ne postoji ljudi

iNT INT auto_increment primarnu tipku,

ili umre ("MySQL greška:" .mysql_error ());


Ova skripta stvara stol za novu ljude sa dva polja. Prvo polje ima INT tip (cijeli broj) i ID imena. Drugi - tip teksta (tekst teksta) i ime imena.

Ako tablica postoji, dizajn ili umrijeti () će raditi.

Opciona fraza ako ne prelazi, ako je navedena, kaže MySQL server, da ne bi trebao generirati poruku o pogrešci ako tablica s navedenim imenom već postoji u bazi podataka.

Sjetite se tih vremena kad nisam znao šta mysql I često su tražili takve članke na Internetu. Ali iz nekog razloga su retko pronađeni. Sad sam odlučio da izvršim tako korisne članke o mysql i pHP. To je postalo još jedno. Pokušaću da napišem sve na pristupačnom jeziku.

prvi koraci sa MySQL i PHP

Dakle, za početak potreban nam je lokalni poslužitelj kako bismo se pokrenuli pHP skripte I povežite se s bazom podataka (tada ću nazvati bazu podataka koja znači "bazu podataka"). Ako još uvijek nemate lokalni poslužitelj, prvo morate pročitati instalaciju i konfiguraciju localhost., a zatim počnite da proučavate bazu podataka mysql i njeni DBMS (znači upravljanja bazom podataka).

Ako već imate ovaj server, to radimo. Za početak, želim da vas upoznam sa DBMS-om PhpMadmin.Omogućuje vam upravljanje (dodavanje, brisanje, izmjeno) u bazi podataka.

Ovo je glavna stranica DBMS phpmyadmin.. Odavde možete kreirati svoju bazu podataka i pohraniti potrebne unose u njemu. Vrlo je prikladno prilikom kreiranja web lokacija, jer su informacije strukturirane i vrlo brzo možete dobiti unos iz baze podataka.

Kao što je već spomenuto, prvi dio članka, upoznavanje sa mysql i phpMadmin.. Mislim da sada razumijete šta je MySQL i možemo početi istraživati \u200b\u200bfunkcionalnost phpmyadmin. Za početak rada, moramo stvoriti sam bazu podataka (bazu podataka). Imaće svoje ime za koje ćemo je potražiti kasnije.

Evo opće strukture strukture baze podataka:

Da biste kreirali bazu podataka, unesite u polje za unos ispod linije "Kreirajte novu bazu podataka" (na glavnoj stranici PHPYADMIN-a) bilo koje ime (ne ćirilica!) Za buduću bazu. Stvorit ću bazu podataka nazvana "Baza". Sada, prateći dijagram BD strukture moramo napraviti tablicu. Da biste to učinili, nakon stvaranja baze, imat ćete takav prozor:

Ovdje kreiram tablicu s imenom korisnika i 3 polja u njemu. Daljnji phpmyadmin će nas zamoliti da postavimo strukturu za svako polje:

Ovdje u stupcu "Field" morate odrediti ime, u "vrsti" odredite vrstu podataka koji će se tamo pohraniti (INT je broj, varchar - linijski ili mali (!) Tekst). Pored toga, navedite polje pod nazivom "ID" parametar "Auto_increament", što znači da će se svaki put povećati u umetanju bilo kakvih podataka i podesiti parametar "Primarni ključ" (stavite krug), to znači da na prvom stupcu možemo definitivno identificirati polje.

"Definitivno identificirati polje" znači čak i ako će ime i prezime biti isti, kolumne ID će imati različite vrijednosti (jer se automatski povećava po jedinici svaki put).

Sada kliknite "Save". Dakle, stvorili smo korisnike u kojem možemo pohraniti ime i prezime (ID ne treba umetnuti, MySQL će učiniti sve za nas), u korisnicima baze podataka. Stvorili smo tablicu za pohranu zapisa. I kako ih staviti tamo? Pročitajte u nastavku

Odaberite u izborniku "Paste" i napišite željene vrijednosti na potrebna polja. Sada kako izbrisati ili promijeniti vrijednosti u MySQL bazi podataka iz baze PHPMadmin baze ... Da biste izbrisali, samo idite na izbornik Pregled i pritisnite crvenu prevezu nasuprot snimanju:

I za uređivanje kliknite na olovku i zamijenite potrebna polja. Pa, na ovoj lekciji je završeno. Sada možete upravljati MySQL bazom podataka pomoću phpmyadmin. U sljedećoj lekciji učit ću vas da pohranite, primite, izbrišete i ažurirate podatke u bazi podataka koristeći PHP.. Vrlo je zgodno i praktično.

Rad sa MySQL bazom podataka iz PHP-a

Dakle, prvo morate naučiti da se povežete sa već poznatim osnovnim bazom podataka. Da biste to učinili, ovaj se kôd koristi:

U gornjem kodu povezao sam se s lokalnim na serverom pomoću prijave korijen što ne zahtijeva lozinku (stoga ga ne navodem). Nakon povezivanja s bazom podataka, možemo izvesti sve one operacije koje su izvedene u phpmyadmin. To jest, umetnite, izbrišite, promenite i primite različite informacije. Sada, na bodovima:

Umetnite unose u SQL bazu podataka na PHP-u

$ Query \u003d "Umetnite u tablicu` (" Point polje ",` Navedite polje`) vrijednosti ("bilo koja vrijednost", "bilo koja vrijednost") "; $ Rezultat \u003d MySQL_Query ($ upit); Ako ($ Rezultat \u003d\u003d True) (Echo "Uspješno!";) Else (Echo "Greška!
".mysql_error ();)

To jest, umetak se vrši u umelniku. Ako je sve uspješno otišlo, MySQL će vratiti rezultat istinite ili na drugi način - lažno.

Polja se mogu barem odrediti koliko je glavna stvar u tome što su svi postojali u bazi podataka. To je, na primjer, postoji tablica u kojoj se nalaze polja "naziv", "Prezime" i "Grad". Umetnuti u njega, koristit ćemo takav kod:

$ Query \u003d "Umetnite u" korisnike "(` name`, `Prezime", `Grad`) vrijednosti (" Ruslan "," Huzin "," Kokshetau "," Kokshetau ")"; $ Rezultat \u003d MySQL_Query ($ upit); Ako ($ Rezultat \u003d\u003d True) (Echo "Uspješno!";) Else (Echo "Greška!
".mysql_error ();)

Uklanjanje unosa iz SQL baze podataka na PHP

Izbriši se izvodi funkcijom brisanja. Za to će biti nešto slično ovaj kod:

$ Query \u003d "Izbriši iz" korisnika "gde" name` \u003d "ruslan" "; $ Rezultat \u003d MySQL_Query ($ upit); Ako ($ Rezultat \u003d\u003d True) (Echo "Uspješno!";) Else (Echo "Greška!
".mysql_error ();)

To jest, izbrišemo sve linije iz USSS tablice (dobro, ili jedan), gdje je naziv stupca jednak ruslanskoj vrijednosti.

Promjena vrijednosti u MySQL bazi podataka na PHP-u

Takođe možemo izmijeniti promjene u već postojećim zapisima u tablici. Na primjer, moramo zamijeniti vrijednost stupca imena u nizu, gdje je kolona prezimena Huzin. Da biste to učinili, izvedite takav kod:

$ Query \u003d "Ažuriranje` set korisnika`` name` \u003d "MyName" gde` "\u003d" Huzin ""; $ Rezultat \u003d MySQL_Query ($ upit); Ako ($ Rezultat \u003d\u003d True) (Echo "Uspješno!";) Else (Echo "Greška!
".mysql_error ();)

Dobivanje vrijednosti iz baze podataka

Sada je najzanimljivije. Jednom smo nešto snimili, onda biste se trebali vratiti? Na primjer, moramo doći od tablice korisnika svu liniju gdje je naziv stupac jednak Ruslanju. Da biste to učinili, potreban nam je malo drugačiji kod nego u prvim primjerima. Evo ga zapravo:

$ Query \u003d "Select * odakle``` RUSLAN ""; $ Rezultat \u003d MySQL_Query ($ upit); Ako ($ Rezultat \u003d\u003d True) (Echo "Uspješno!";) Else (Echo "Greška!
".mysql_error ();) $ podaci \u003d mysql_fetch_array ($ rezultat); / * sada podaci iz tablice pohranjuju se u varijabli * /

Ovdje su nam trebale još jednu značajku, za snimanje odabranih podataka u varijablu (niz) na PHP. Da biste kontaktirali odabrani niz, mi pišemo ovako:

$ Podaci ["naziv stupca"]

odnosno, da prezime iz odabrane linije (gde je ime bilo Ruslan), trebali bismo pisati na zaključak:

echo $ podaci ["prezime"];

A kad sam uzorkovanje iz tablice napisao sam odaberite *, ova zvjezdica znači da morate odabrati sve stupce iz niza. Ako nam treba, na primjer, odaberite samo prezime, pisanje Odaberite `Prezime`. A za uzorkovanje odjednom nekoliko redaka iz tablice, ciklus će također biti potreban za njihov izlaz. Ovo je ako na primjer, redovi s Ruslan stupom bit će nekoliko. Evo koda:

$ Query \u003d "Select * odakle``` RUSLAN ""; $ Rezultat \u003d MySQL_Query ($ upit); dok ($ podaci \u003d mysql_fetch_array ($ rezultat)) (echo $ podaci ["naziv"]. "
"$ Podaci [" Prezime "]."


"; }

Sada su sve linije iz kojih se naziv stupca jednak prikazivalo vrijednosti Ruslana.

Ovdje ste upoznali glavne kontrolne funkcije mySQL baza podataka direktno od pHP skripta.

U ovom ćemo članu naučiti pošaljite zahteve u bazu podataka putem PHP-a. Ovaj je članak vrlo važan, a potrebno je da razumijete. Međutim, smiriću vas - materijal je vrlo jednostavan, tako da ne bi trebalo biti poteškoće.

Prije prelaska na temu članka, unaprijed upozoravam da se neću detaljno rastaviti sQL jezik. Sve potrebne informacije rastavljane u kategoriji posvećene, a evo nas samo radimo sa MySQL putem PHP-a.

Sada idite na K. slanje zahtjeva baze podataka za PHP:


}
$ MySQLi-\u003e upit ("Umetnite u mitable (ime, e-poštu) vrijednosti (" MyName "," [Zaštićen e-poštom]")");
$ mysqli-\u003e zatvori ();
?>

U ovom primjeru povezali smo se s bazom podataka, provjerili uspjeh veze, poslali su zahtjev pomoću metode upit ()A zatim zatvorio vezu. Kao što vidite, sve je vrlo jednostavno. Poslati bilo koji SQL Queries Samo samo jedna metoda - upit (), Dakle, u ovom slučaju sve je ludo jednostavno.

Sada malo komplicira zadatak. Pogledajmo zahtjeve koji se vraćaju rezultat_set. - Rezultat. Najpopularniji zahtjev donesen rezultat_set. - Ovo je uzorak podataka iz tablice. U sljedećem primjeru napravit ćemo uzorak podataka, a zatim sažeti rezultate:

$ mysqli \u003d @new mysqli ("Localhost", "admin", "Pass", "Mybase");
Ako (mysqli_connect_errno ()) (
Echo "veza nije moguća:" .mysqli_connect_error ();
}
$ Rezultati_set \u003d $ mysqli-\u003e
Dok ($ row \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ red);
Eho "
";
}
$ Rezultati_set-\u003e Zatvori ();
$ mysqli-\u003e zatvori ();
?>

Za početak, objasniti ću malo, što je rezultat_set.. Rezultat_set. - Ovo je tabela sa rezultatom. Ova tablica ima skup zapisa (tablica). A za izlaz svih zapisa morate premjestiti svaku liniju tablice i povući je. A sada objasnim primjer: Nakon slanja zahtjeva, formirani smo rezultat_set.. Zatim dodijelimo varijablu u ciklusu red Vrijednost sljedećeg retka, odnosno jednodimenzionalni niz koji vraća metodu fetch_assoc (). Kad se pokrenu sve linije, metoda fetch_assoc () povratak lažani bit će pušten iz ciklusa. Unutarnji ciklusi dok Jednostavno izvodimo niz koristeći funkciju uklanjanja pogrešaka. print_r ()Iako bi sigurno bilo moguće povući se koristeći za svaki.Ali sada nije neophodno.

Neka kratko rezimiramo kako raditi sa rezultat_set.:

  1. Primiti rezultat_set.Slanjem odgovarajućeg zahtjeva bazi podataka.
  2. U ciklusu svake iteracije da dodijelite sljedeću liniju (snimanje) od rezultat_set. pomoću metode fetch_assoc () Neka varijabla red. Tada možete raditi s ovom varijablom kao u jednodimenzionalnom asocijativnom nizu, u kojem su tipke imena polja tablice, a vrijednosti odgovaraju trenutnom unosu.
  3. Obavezno zatvorite rezultat_set. Metoda zatvori ()Za pokrivanje resursa.

Kako ste primijetili metodu fetch_assoc () Vraća sljedeću zapis uvijek. To je prvo prva, tada druga, tada 3. i tako dalje. Ako imate dobro programiranje iskustva, odmah ćete pogoditi da se to zbog unutrašnjeg pokazivača, naravno, možete kretati. Gdje se koristi? Na primjer, može se koristiti kada trebate raditi sa rezultat_set. ne 1 , ali 2 Više nego jednom. Da biste ponovo formirali isti zahtjev, možete jednostavno pomaknuti pokazivač na početak. A onda se možete ponovo uključiti rezultat_set. Pomoću metode Fetch_ASSOC ().

Da biste promijenili položaj pokazivača, postoji metoda data_Seek ()koji uzima cijeli broj 0 prije " broj zapisa - 1", respektivno, pokazivač se izlazi na odgovarajući parametar za snimanje:

$ mysqli \u003d @new mysqli ("Localhost", "admin", "Pass", "Mybase");
Ako (mysqli_connect_errno ()) (
Echo "veza nije moguća:" .mysqli_connect_error ();
}
$ Rezultati_set \u003d $ mySQLi-\u003e upit ("Select * iz mitable");
$ Rezultati_set-\u003e num_rows;
Dok ($ row \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ red);
Eho "
";
}
$ Rezultati_set-\u003e podaci_seek (0);
Dok ($ row \u003d $ rezultat_set-\u003e fetch_assoc ()) (
Print_r ($ red);
Eho "
";
}
$ Rezultati_set-\u003e Zatvori ();
$ mysqli-\u003e zatvori ();
?>

U ovom primjeru smo donijeli broj zapisa u rezultatu_set Korištenje objekta num_rows. A takođe se upoznao sa metodom data_Seek (). To jest, prešli smo cijeli rezultat, a zatim vratili pokazivač na 0 Y. Zapis i opet prešli rezultat.

U ovom smo članku ponovili vezu s bazom podataka i zatvaranje veze. I takođe naučio kako slati zahtjeve za bazu podataka putem PHP-a. Naučen, kako primiti rezultate_set. I kako raditi s njim. To je sve što trebate znati za uspjeh radite sa MySQL-om u PHP-u.

Da biste dobili maksimalni povratak iz svoje MySQL baze podataka, važno je shvatiti kako se povezati s korisničkog programa na PHP u MySQL bazu podataka.

Ovaj priručnik opisuje sljedeće tri metode zajedno s odgovarajućim programom primjera na PHP-u, koji će objasniti kako se povezati sa PHP-om u bazu podataka.

  • Veza pomoću proširenja MySQLI (preporučeno)
  • Veza sa PDO (preporučuje se)
  • Veza pomoću tradicionalnih funkcija zastarjela MySQL_ (zadana vrijednost)

Da biste to učinili, instalirajte PHP-MySQL paket.

Na osnovu Redhat distribucije, uključujući, koristite YUM za instaliranje PHP-MySQL-a, kao što je prikazano u nastavku.

Yum install php-mysql

Ovisno o vašem sustavu, mi ćemo instalirati ili ažurirati sljedeće ovisnosti:

  • php-cli
  • pHP-COMENS
  • php-PDO
  • php-pgsql

Nakon što je sve instalirano, Phpinfo stranica će prikazati MySQL modul, kao što je prikazano u nastavku:

Za sve dolje navedene primjere, povezati ćemo se s MySQL bazom podataka koja već postoji. Ako ste novi u MySQL, ovo je dobro mjesto za početak :.

Napomena: Sve što je ovdje opisano također će raditi s mariadb, jer radi na MySQL-u.

1. Povezivanje na PHP pomoću proširenja MySQLI

Mysqli znači da je MySQL poboljšao.

Imajte na umu da većina distribucija (na primjer: Centos), PHP-MySQLI je već dio PHP-MySQL paketa. Stoga ne morate pretraživati \u200b\u200bi instalirati PHP-MySQLI paket. Sve što trebate učiniti je instalirati PHP-MySQL paket da biste dobili radno MySQLI proširenje na vašem sustavu.

Napravite sljedeću mysqli.php datoteku u dokumentu TOPROOT vapatih:

connect_Error) (Die ("Greška: Nije moguće povezati:". $ Conn-\u003e Connect_Error);) Echo "Povežite se na bazu podataka.
"; $ Rezultat \u003d $ Conn-\u003e upit (" Select Ime od zaposlenog "); Echo" Broj redaka: $ Rezultat-\u003e Num_Rows "; $ Rezultat-\u003e Zatvori ();

U gore navedenom:

  • MySQLI - Ova značajka će pokrenuti novu vezu koristeći MySQLi ekstenziju. Ova značajka će trajati četiri argumenta:
    1. Ime domaćina u kojem funkcioniše MySQL baza podataka
    2. Korisničko ime za MySQL vezu
    3. MySQL korisnička lozinka
    4. MySQL baza podataka za vezu.
  • Funkcija upita - koristite ga da biste odredili svoj MySQL zahtjev. U ovom primjeru, miramo stupac imena iz baze zaposlenika.
  • Konačno, prikazujemo broj odabranih redaka pomoću varijable Num_Rows. Takođe zatvorimo vezu kao što je prikazano gore.

Povežite se s bazom podataka. Broj žica: 4

Napomena: Ako se pokušavate povezati s udaljenim MySQL bazom podataka, tada možete učiniti da izbjegnete grešku veze s domaćinom: Kako dopustiti MySQL klijentu da se poveže na MySQL daljinski poslužitelj.

2. Veza pomoću PHP-a na MySQL sa PDO ekstenzijom

PDO znači PHP podaci objekti.

PDO_MYSQL provodi PDO sučelje koje pruža PHR za povezivanje programa u MySQL bazu podataka.

U većini distribucija Linuxa (na primjer, Centos i Redhat), PHP-PDO paket već je uključen u PHP-MySQL paket. Dakle, ne morate pretraživati \u200b\u200bi instalirati PHP-PDO paket. Sve što trebate učiniti je instalirati PHP-MySQL paket da biste dobili proširenje pokretanja PDO_MYSQL PHP na vašem sustavu.

Stvorite sljedeću MySQL-PDO.php datoteku u svom Apache dokumentu:

setattribute (PDO :: Att_ermormode, PDO :: Errmode_Exception); Echo "Povežite se na bazu podataka.
"; $ SQL \u003d" Odaberite ime od zaposlenika "; ispis" Naziv zaposlenika:
"; Foreach ($ Conn-\u003e upit ($ SQL) kao $ red) (Print $ red [" naziv "]."
";) $ Conn \u003d null;) ulov (echo" greška: Nije moguće povezati: ". $ Err-\u003e getmessage ();)?\u003e

U gore navedenom:

  • novi PDO - stvorit će novi PDO objekt koji će uzeti sljedeća tri argumenta:
    1. MySQL Spajanje niz: bit će u formatu "MySQL: domaćin \u003d $ hostname; dbname \u003d $ dbname". U gornjem primjeru, baza podataka djeluje na lokalnom domaćinu, a povezujemo se s Andreyex bazom podataka.
    2. Korisničko ime za povezivanje s MySQL-om.
    3. Lozinka za MySQL korisnika.
  • $ SQL varijabla - Stvaranje SQL upita koje želite nastupiti. U ovom primjeru, iz tablice zaposlenika odaberemo stupac na ime.
  • upit ($ SQL) - Ovdje vršimo SQL zahtjev, koji smo upravo stvorili.
  • foreach - Ovdje mi vodimo kroz gore navedene naredbe i spremimo ih u varijabilnu liniju $, a zatim im pokazujemo upotrebu naredbe za ispis.
  • U MySQL PDO da biste zatvorili vezu, jednostavno resetirajte vrijednost varijable $ Conn.

Kada nazovete mysqli.php iz svog pretraživača, vidjet ćete sljedeći zaključak, što ukazuje da je PHP mogao povezati sa MySQL bazom podataka i napraviti uzorak podataka.

Povežite se s bazom podataka. Ime službenika: Siteslan Maria Oleg

3. Spajanje na PHP koristeći funkcije MySQL_ (zadana vrijednost)

Koristite ovu metodu samo ako koristite stariju PHP verziju i ne možete ga ažurirati na novu verziju iz nekog razloga.

Ovo je zastarjelo proširenje PHP 5.5. Ali počevši sa PHP 7.0 verzijom, neće raditi, jer je uklonjeno.

Počevši sa PHP 5.5 verzijama kada koristite ove funkcije, generirat će e_deprecionu grešku.

Stvorite sljedeću MySQL-Legacy.php datoteku pod Apache dokumentacijom:

"; $ Rezultat \u003d mysql_query); $ row \u003d mysql_fetch_row ($ rezultat); echo" zaposlenik 1: ", $ red"
\\ n "; mysql_close ($ conn);?\u003e\u003e

U gore navedenom:

  • MySQL_Connect funkcija zauzima tri argumenta: 1) Naziv domaćina, gdje MySQL baza podataka radi, 2) korisničko ime za povezivanje na MySQL, 3) lozinku za MySQL. Ovdje se povežete sa MySQL bazom podataka, koja se pokreće na lokalnom poslužitelju pomoću korijenskog korisničkog imena i njegovu lozinku.
  • Funkcija MySQL_Select_DB - kako slijedi iz imena, birat će bazu podataka kojoj želite povezati. To je ekvivalent naredbi "Upotreba". U ovom primjeru se povezujemo na bazu podataka Andreyex.
  • Funkcija MySQL_Query - Koristite ga da biste odredili svoj MySQL zahtjev. U ovom primjeru, miramo stupac imena iz baze zaposlenika.
  • mysql_fetch_row - Koristite ovu značajku za izdvajanje reda iz SQL upita koji smo upravo stvorili.
  • Konačno, zatvorite vezu pomoću naredbe mysql_close, kao što je prikazano gore.

Prilikom pozivanja MySQL-Legacy.php iz vašeg pretraživača vidjet ćete sljedeći zaključak, što ukazuje da je PHP mogao povezati s MySQL bazom podataka i napraviti uzorak podataka.

Povežite se s bazom podataka. Zaposleni 1: Andreyex

Sa php ...

Stvaranje veze na različite načine:

1) Old Dedovsky metoda veze sa MySQL-om:

$ Conn \u003d mysql_connect ($ db_hostname, $ db_username, $ db_password) ili die ("nema veze sa serverom");
mysql_select_db ($ db_database, $ conn) ili die ("ne uspio se povezati s bazom podataka");

Objašnjenje varijable u nastavku.

Istovremeno se koriste funkcije:

  • mysql_connect () - da se povežete sa serverom;
  • mysql_select_db () - povezati se s bazom podataka;

Istovremeno, stalno provjeravamo prisustvo pogreške na ovaj način: ili umrijeti ("greška je tako"); - Prevodi kao ili umire s takvom greškom - da biste odmah pronašli gdje je greška.

config.php.

// Varijable za povezivanje s bazom podataka
$ Host \u003d "Localhost"; / Domaćin
$ Korisničko ime \u003d "root"; // Lozinka za povezivanje na bazu podataka
$ Lozinka \u003d ""; // Lozinka za krađu bazu podataka - na lokalnom računalu može imati praznu vrijednost.
$ baza podataka_name \u003d "My-Dolgi"; // BD Ime

// Stari način života sa bazom podataka
Mysql_connect ($ host, $ korisničko ime, $ lozinka) ili die ("Ne mogu se povezati za stvaranje spoja");

// Odaberite bazu podataka. Ako je greška za prikaz
mysql_select_db ($ baza podataka_Name ili umre (mysql_error ());

index.php.

zahtijevati_once "config.php";


$ Rezultat \u003d MySQL_Query ("Odaberite ime, novac od Dolg narudžbe putem novca desc limit 5") ili umre (mysql_error ());



";


Dok ($ row \u003d mysql_fetch_assoc ($ rezultat)) (
";
}


mysql_free_result ($ rezultat);

// zatvorite vezu
mysql_close ();

2) Progresivniji proceduralni stil - veza sa bazom podataka sa MySQLI:

Ova metoda:

  1. pogodno;
  2. brže do 40 puta;
  3. poboljšana sigurnost;
  4. postoje nove funkcije i funkcije;

Primjeri Priključak s bazom podataka na PHP-u sa uzorkom iz tablice

config.php.

// Sociologija sa bazom podataka
$ Link \u003d mysqli_connect ("Localhost", "Korisničko ime", "Lozinka", "Baza podataka" "); // Ovdje unosim vaše podatke direktno: korisničko ime, lozinku i naziv baze podataka, prvo polje obično lokalno

// Izlaz greške veze
Ako (! $ Link) (
Echo "Pogreška pri povezivanju na bazu podataka. Kod greške:". mysqli_connect_error ();
Izlaz;
}

Napomena - svuda koristite Mysqli, a ne mysql !!!

index.php.

zahtijevati_once "config.php";

// izvršiti zahtjev. Ako se prikaže greška
ako ($ Rezultat \u003d mysqli_query.($ Venk, "Odaberite ime, novac od dolg narudžbe putem novca desc limit 5")) (

Echo "kome moram spustiti:

";

// Odabir rezultata upita
Dok ($ red \u003d mysqli_fetch_assoc.($ rezultat)) (
Echo $ red ["naziv"]. "Sa dug." $ Red ["novac"]. "Rublis.
";
}

// oslobađanje memorije korištene
mysqli_free_result($ rezultat);

// zatvorite vezu
mysqli_close($ Link.);
}

Kao što vidite, neki su se trenuci promijenili (dodijeljeni u kurzivu).

3) Objektno orijentisana metoda za povezivanje sa MySQL bazom podataka - koristeći metode i časove:

Protiv: teže i manje podložne grešaka.

Pros: sažetost i praktičnost za programere sa iskustvom.

$ Conn \u003d New MySQLI ($ db_hostname, $ db_username, $ db_password, $ db_database);
ako ($ conn-\u003e connect_errno) (
Umrijeti ($ conn-\u003e connect_error);
) Drugo (Echo "veza sa bazom podataka uspješno je uspostavljena";)

evo, u principu, sve je intuitivno:

  • $ db_hostname je domaćin (uglavnom localhost),
  • $ db_database - bD Ime;
  • $ Db_username i $ db_password - korisničko ime i lozinka, respektivno!

Primjer priključka s bazom podataka na PHP stilu OOP sa uzorkom iz tablice

config.php.

// Sociologija sa bazom podataka
$ mysqli \u003d novi mysqli ("Localhost", "Korisničko ime", "Lozinka", "Baza podataka" "); // Ovdje unosim vaše podatke direktno: korisničko ime, lozinku i naziv baze podataka, prvo polje obično lokalno

// Izlaz greške veze
ako ($ mysqli-\u003e connect_error) (
Die ("Pogreška koja se povezuje na bazu podataka: (" $ MySQLi-\u003e Connect_errno. ")". Mysqli_connect_error);
}

Napomena - svuda koristite Mysqli, a ne mysql !!! I za razliku od prethodne metode, pojavljuju se strelice "-\u003e", što pokazuju da je ovo oop stil.

index.php.

zahtijevati_once "config.php";

// izvršiti zahtjev. Ako se prikaže greška
ako ($ rezultat \u003d $ mySQLi-\u003e upit.("Odaberite ime, novac od Dolga narudžbe putem novca Desc Limit 5")) (

Echo "kome moram spustiti:

";

// Odabir rezultata upita
Dok ($ red \u003d $ rezultat-\u003e fetch_assoc.()) {
Echo $ red ["naziv"]. "Sa dug." $ Red ["novac"]. "Rublis.
";
}

// oslobađanje memorije korištene
$rezultat-\u003e Zatvori ();

// zatvorite vezu
$mysqli-\u003e zatvori.();
}

Zadatak vam - pronađite razlike.

4) Komunikacija sa bazom podataka sa PDO:

Kada se poveže sa MySQL bazom podataka koriste se pripremljeni izrazi (prema pripremi metode) i kao rezultat velike sigurnosti i uvelike povećava brzinu.

konfigurirajte datoteku. Iz prethodne metode! - isto

index.php.

// PDO stil za komunikaciju sa MySQL-om
Ako ($ STMT \u003d $ MySQLi-\u003e Priprema ("Odaberite naziv, voney od Dolg nalog za novac< ? LIMIT 5")) {

$ Stmt-\u003e bind_param ("i", $ summa);
$ Summa \u003d 100000;

// izvođenje izvršenja
$ STMT-\u003e Execute ();

// najava varijabli za ubrane vrijednosti
$ STMT-\u003e Bind_result ($ col1, $ col2);

Echo "kome moram spustiti:

";

// Odabir rezultata upita
Dok ($ stmt-\u003e dohvaćanje ()) (
Echo $ col1. "Sa dug." $ col2. "Rublis.
";
}

// oslobađanje memorije korištene
$ STMT-\u003e Zatvori ();

// zatvorite vezu
$ mysqli-\u003e zatvori ();

Kao što vidimo, mnogo je teže i potrebno za učenje PDO-a je zasebna tema.