MySQL taotleb PHP näiteid. SQL - taotlused ja nende töötlemine PHP abil

Töö MySQL andmebaasi RNR

Loeng. Valmistatud prokhorov vs


1. PNP-stsenaariumide ühendamine MySQL-i tabelitega

Mõtle kõige sagedamini kasutatavate funktsioonide jaoks, mis võimaldavad teil töötada MySQL-andmebaasiga RNR-i poolt.

Kui RNR ja MySQL interakteerub, interakteerub programm DBMS-i abil funktsioone abil.

1.1 Ühendus serveriga. Ülesannemysql_connect.

Enne andmebaasi töötamist peate sellega installima võrguühendus, samuti käituvad kasutajaloa. See on MySQL_Connect () funktsioon.

ressurss MySQL_Connect (]])

See funktsioon seab võrguühenduse MySQL andmebaasi asub $ server host (vaikimisi on localhost, s.t praegune arvuti) ja tagastab avatud ühenduse identifikaator. Kõik täiendavad tööd tehakse selle identifikaatoriga. Kõik muud funktsioonid, kes võtavad selle tunnus (deskriptor) argumendina, määratlevad valitud andmebaas ainulaadselt. Registreerimisel on kasutajanimi $ Kasutajanimi ja $ parooli parool (vaikimisi kasutajanime, millest praegune protsess töötab - skriptide silumise korral: juur ja tühi parool):

$ dbpasswd \u003d ""; // parool

// Kuva hoiatus

eCHO ("

");

Muutujate $ dblocation, $ DBUSER ja $ DBPASSWD Store Serveri nimi, kasutajanimi ja parool.

1.2 Tarve-ühendus serveriga. Ülesannemysql_close

Ühendus MySQL-serveriga suletakse automaatselt skripti lõpus või MySQL_Close funktsiooni helistamisel

bool MySQL_Close ()

See funktsioon purustab ühenduse MySQL-serveriga ja naaseb tõsi operatsiooni eduka täitmise ja vale teisiti. Funktsioon aktsepteerib andmebaasi ühendamise deskriptori argumentina, mida tagastatakse MySQL_Connect funktsiooni.

$ dblocation \u003d "localhost"; // serveri nimi

$ dBuser \u003d "root"; // kasutajanimi

$ dbpasswd \u003d ""; // parool

// Sisestage ühendamine andmebaasi serveriga

// Enne funktsiooni helistamise vea väljund sümbolit @

$ dbcnx \u003d @ mysql_connect ($ dblocation, $ dBuser, $ dbpasswd);

kui (! $ DBCNX) // Kui deskriptor on 0, ei ole ühendus paigaldatud

// Kuva hoiatus

eCHO ("

B. praegu Andmebaasi server ei ole saadaval, nii et õige lehekülje kuva ei ole võimalik.");

kui (MySQL_Close ($ dbcnx)) // katkestage ühendus

eCHO ("Ühendus andmebaasi lõpetatakse");

eCHO ("ta suutis ühenduse lõpetada");

1.3 Andmebaasi loomine. Loo andmebaasi funktsioon

Käsk - andmebaasi loomine on saadaval ainult serveri administraatorile ja enamiku hostimise kohta on võimatu seda teha:

Loo andmebaasi nimi

Loob uue andmebaasi nime seondumise nimega.

Selle funktsiooni töötamise näide:

@MysQl_Query ("Loo andmebaasi $ dbname");

Soovitatav on kasutada apostroofide kõikjal ("SQL-käsk") SQL-käskude sisaldavate joonte piirajana. See võib tagada, et ükski $ muutuja kogemata interpoleeritakse (s.o seda ei asenda selle väärtusega) ja skriptide ohutus suureneb.

Loo andmebaasi andmebaasi meeskonna käsk on saadaval ainult superuserile ja lihtsa kasutaja enamikul hosting kasutajatelt ei ole võimalik täita. See on saadaval ainult serveri administraatorile.

Katsete jaoks looge testbaasi andmebaasi, täites SQL-i päringu käsurealt. Selleks logige MySQL-süsteemi sisse ja sisestage käsurea MySQL:

mySQL\u003e Loo andmebaasi testbase;

Pärast seda peaksite valima:

mySQL\u003e Kasutage TESTBASE;

Andmebaas on loodud:


1.4 Valige andmebaas. Ülesannemysql_select_db.

Enne esimese taotluse saatmist MySQL-serverisse peate täpsustama, millist andmebaasi me töötame. Selleks on MySQL_Select_DB funktsioon mõeldud:

bool mysql_select_db (string $ andmebaas_name [, ressurss $ link_identifier])

Ta teatab PHP-st, et edasistes operatsioonides on $ link_identfier ühendusega $ andmebaasi_nimi.

Selle funktsiooni kasutamine on samaväärne Helistamise käsu helistamiseks SQL-päringus, s.o MySQL_SELECT_DB funktsioon valib täiendava töö andmebaasi ja kõik järgnevad SQL päringud kehtivad valitud andmebaasile. Funktsioon võtab andmebaasi Nimi nimi valitud andmebaasi argumentidena ja ressursiühenduse deskriptorina. Funktsioon naaseb eduka toimimise ja valega - vastasel juhul:

// Ühenduskood andmebaasiga

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

// Kuva hoiatus

eCHO ("

B Nüüd ei ole andmebaas saadaval, nii et õige lehekülje kuva ei ole võimalik.");

1.5 töötlemise vigu

Kui MySQL-i töö ajal esinevad vead (näiteks juhid ei ole tasakaalustatud või ei ole piisavalt parameetreid), siis võib veateate ja selle numbrit saada kahe allpool kirjeldatud kahe funktsiooni abil.

Oluline on hoolikalt ja kasutada neid funktsioone õigeaegselt, sest vastasel juhul võib skriptide silumine muutuda keerulisemaks.

● Funktsioon:

int mysql_errno ()

tagastab viimaste salvestatud vigade arvu. Sa ei saa määrata $ link_identfer-ühenduse identifikaatorit, kui skripti ajal paigaldati ainult üks ühendus.

● Funktsioon:

string mysql_error ()

tagastab mitte number, vaid veateate teksti sisaldav string. On mugav kohaldada silumisotstarbel. Tavaliselt kasutatakse MySQL_Error disaini või die (), näiteks:

@Mysql_connect ("Localhost", "Kasutaja", "Parool")

või surra ("Viga andmebaasi ühendamine:" .mysql_error ());

Operaator @, nagu tavaliselt, kasutatakse standard hoiatuse mahasurumiseks, mis võivad tekkida vea korral.

Sisse viimased versioonid RNR hoiatus MySQL funktsioonides ei ole vaikimisi registreeritud.

1.6 Ühendus MySQL-ga. Faili (config.php.)

Tavaliselt on kohapeal korraga mitu skripte, mida vajate juurdepääsu samale andmebaasile.

MySQL-i ühendamise eest vastutav seatud kood on soovitatav eraldada eraldi failja seejärel ühendage funktsiooni abil funktsioon vajalikud skriptid.

See on mõttekas paigutada funktsioone ühendamiseks, valides ja luua andmebaasi sama faili (config.php), kus muutujad deklareeritakse nimi $ dblocation server, $ dBuser kasutajanime, parooli $ dbpasswd ja nimi $ dbname andmebaasi nimi:

CONFIG.PHP loetelu:

//config.php-faili kood, mis sisaldab serveri ja andmebaasi valikuühenduse parameetreid

// Näitab brauseri veateateid

$ dblocation \u003d "localhost"; // serveri nimi

$ dbname \u003d "Sisestage baasnimi" // andmebaasi nimi: loodud või juba olemasolev

$ dBuser \u003d "root"; // andmebaasi kasutajanimi

$ dbpasswd \u003d ""; // parool

// Sisestage ühendamine andmebaasi serveriga

// Enne funktsiooni helistamise vea väljund sümbolit @

[E-posti kaitstud]_Connect ($ dblocation, $ dBuser, $ dbpasswd);

kui (! $ DBCNX) // Kui deskriptor on 0, ei ole ühendatud andmebaasi serveriga

// Kuva hoiatus

eCHO ("

Praegu ei ole andmebaasi server saadaval, nii et lehe õige kuva on võimatu.

");

// luua $ dbname andmebaasi - see saab teha ainult superuser

// Kui andmebaas on juba olemas, siis on kriitiline viga

@Mysql_query ("Loo andmebaas, kui ei ole olemas $ dbname");

// Ühenduskoodi andmebaasiga: me teostame hiljuti loodud andmebaasi või olemasoleva andmebaasi ühemõttelist valikut

// Enne funktsiooni helistamise vea väljund sümbolit @

kui ( [E-posti kaitstud]_select_db ($ dbname, $ dbcnx)) // Kui deskriptor on 0, ei ole andmebaasi ühendus paigaldatud

// Kuva hoiatus

eCHO ("

Praegu ei ole andmebaas saadaval, nii et lehe õige kuva on võimatu.

");

// väike lisafunktsioonmis kuvab sõnumi

// Vea andmebaasi päringu vea korral

funktsioon PUTEERROR ($ sõnum)

eCHO ("");


2. Tehke andmebaasi päringud

2.1 Tabeli loomine. Ülesanne Loo tabelit:

Loo tabeli tabeli nimi (NamePole tüüp, NamePole tüüp)

See andmebaasi käsk loob uue tabeli veergudega (väljad), mis on määratletud oma nimede (nimed) ja määratletud tüüpidega. Pärast tabeli loomist on võimalik lisada dokumente, mis koosnevad selles käsutuses loetletud väljadest.

Test_11.php loetelu. Programm, mis loob andmebaasis uue tabeli:

lisage "config.php"; // Ühenda server ja andmebaasi valiku

mysql_query ("Loo tabel, kui ei ole olemas inimesed

iD Indi auto_increment esmane võti,

või surra ("MySQL viga:" .mysql_error ());


See skript loob uue inimese tabeli kahe väljaga. Esimesel väljal on int tüüpi (täisarv) ja nimi ID. Teiseks-tüüpi tekst (Text String) ja nimi nimi.

Kui tabel on olemas, töötab või sureb disain ().

Vabatahtlik fraas, kui see ei ületa, kui see on määratud, ütleb MySQL server, et see ei tohiks luua veateatet, kui tabelis määratud nimega on andmebaasis juba olemas.

Mäleta neid korda, kui ma ei teadnud, mida mysql Ja tihti taotlevad selliseid artikleid internetis. Kuid mingil põhjusel leiti nad harva. Nüüd otsustasin ma sellise kasuliku artiklite kohta välja panna mysql ja pHP. See sai veel üheks. Püüan kirjutada kõike ligipääsetavates keeltes.

alustamine MySQL ja PHP-ga

Niisiis, alguses, me vajame kohalikku serverit käivitamisel pHP skriptid Ja ühendage andmebaasiga (ma helistan andmebaasi, mis tähendab "andmebaasi"). Kui teil pole ikka veel kohalikku serverit, peate kõigepealt lugema installi ja konfiguratsiooni localhost.ja seejärel alustage andmebaasi õppimist mysql ja selle DBMS (andmebaasi haldamise vahendid).

Kui teil on juba seda serverit, siis teeme seda. Alustada, ma tahan tutvustada teile DBMS Phpmyadmin.See võimaldab teil hallata andmebaasis (lisada, kustutada, muuta).

See on peamine leht DBMS phpmyadmin.. Siit saate luua oma andmebaasi ja salvestada vajalikud kanded. Saitide loomisel on väga mugav, sest teave on struktureeritud ja saate andmebaasist sisenemise väga kiiresti saada.

Nagu juba mainitud, esimese osa artikkel, tuttav mysql ja phpmyadmin.. Ma arvan, et nüüd mõistate, mida MySQL on ja me saame alustada phpmyadmin funktsionaalsuse uurimist. Töö alustamiseks peame looma andmebaasi (andmebaas). Tal on oma nimi, mille jaoks me teda hiljem otsida.

Siin on andmebaasi struktuuri üldine struktuur:

Andmebaasi loomiseks sisestage sisendväljale "Loo uus andmebaas" Line (Phpmyadmini põhileheküljel) mis tahes nimi (mitte kirillitsa!) Tulevase aluse jaoks. Loodame andmebaasi nimega "Baza". Nüüd, pärast BD struktuuri diagrammi, peame tabeli tegema tabeli. Selleks on pärast aluse loomist sellist akent:

Siin ma loodan tabeli kasutaja nimi ja 3 väljad selles. Edasine phpmyadmin palub meil määrata iga valdkonna struktuuri:

Siin "Field" veerus on vaja määrata nimi "tüüpi" täpsustada tüüpi andmeid, mis salvestatakse seal (INN on number, varchari - rida või väike (!) Teksti). Lisaks täpsustate märgi nimega "ID" parameetri "auto_increament", mis tähendab, et see suurendab iga kord andmete sisestamist ja seadke parameetri "esmane võti" (pane rounema), see tähendab, et esimesel veerus saame Kindlasti tuvastage väli.

"Kindlasti tuvastage väli" tähendab isegi siis, kui nimi ja perekonnanimi on sama, ID-veerg on erinevad väärtused (kuna see automaatselt suureneb iga kord).

Nüüd klõpsa "Salvesta". Seega oleme loonud kasutajate tabeli, kus me saame salvestada nime ja perekonnanime (ID ei ole vaja sisestada, MySQL teeb kõik meile), andmebaasi kasutajad. Me lõime tabeli dokumentide salvestamiseks. Ja kuidas neid seal sisestada? Loe altpoolt

Valige menüü "Paste" ja kirjutage soovitud väärtused soovitud väljadele. Nüüd kuidas kustutada või muuta väärtusi MySQL andmebaasi Phpmyadmin Database ... kustutada, lihtsalt minna ülevaate menüüsse ja vajutage Red Crosshead vastas salvestus:

Ja redigeerimiseks klõpsake pliiatsil ja asendage vajalikud väljad. Noh, sellel õppetund on lõppenud. Nüüd saate hallata MySQL andmebaasi kasutades phpmyadmin. Järgmises õppetund, ma õpetan teile salvestada, vastu võtta, kustutada ja uuendada andmeid andmebaasi pHP kasutamine.. See on väga mugav ja praktiline.

PHP MySQL andmebaasi töötamine

Niisiis, kõigepealt peate õppima juba teadma juba loodud andmebaasi. Selleks kasutatakse seda koodi:

Ülaltoodud koodis ühendasin logi sisse logise serveriga juurduma Mis ei vaja parooli (seetõttu ma ei täpsusta seda). Pärast andmebaasi ühendamist saame läbi viia kõik need toimingud, mis viidi läbi Phpmyadminis. See tähendab, sisestada, kustutada, muuta ja saada erinevaid andmeid. Nüüd, punktides:

Sisestage PHP SQL andmebaasi kirjed

$ Query \u003d "Sisestage tabel" ("Point Field", `täpsustage väljale") väärtused ("mis tahes väärtus", "mis tahes väärtus") "; $ Tulemus \u003d MySQL_Query ($ Päring); Kui ($ tulemus \u003d\u003d tõsi) (kaja "edukas!";) muidu (ECHO "viga!
".mysql_error ();)

See tähendab, et sisend on lisatud funktsiooni abil. Kui kõik läks edukalt, tagastab MySQL tõelise või muul viisil vale.

Välju saab täpsustada vähemalt, kui palju, peamine asi on see, et nad kõik eksisteerisid andmebaasis. See tähendab näiteks tabelit, kus on väljad "Nimi", "Perekonnanimi" ja "linn". Selle sisestamiseks kasutame sellist koodi:

$ Query \u003d "Sisestage" kasutajate "(` nimi "," perekonnanimi "," linna) väärtused ("Ruslan", "Huzin", "Kokshetau"); $ Tulemus \u003d MySQL_Query ($ Päring); Kui ($ tulemus \u003d\u003d tõsi) (kaja "edukas!";) muidu (ECHO "viga!
".mysql_error ();)

SQL andmebaasi eemaldamine PHP-le

Kustuta teostab kustutamise funktsiooni abil. Selleks on midagi sellist koodi:

$ Päringu \u003d "Kustuta" Kasutajad ", kus` Nimi` \u003d "Ruslan"; $ Tulemus \u003d MySQL_Query ($ Päring); Kui ($ tulemus \u003d\u003d tõsi) (kaja "edukas!";) muidu (ECHO "viga!
".mysql_error ();)

See tähendab, et me kustutame kõik liinid USSS-lauale (hästi või ühest), kus nimi veerg on võrdne RUSLAN väärtusega.

MySQL andmebaasi väärtuste muutmine PHP kohta

Me saame teha ka juba olemasolevaid andmeid tabelis. Näiteks peame asendama reas nime veeru väärtuse, kus perekonnanime kolonn on huzin. Selleks teha sellist koodi:

$ Query \u003d "Uuenda" Kasutajad "Määra` Nimi` \u003d "MyName", kus` perekonnanimi` \u003d "Huzin"; $ Tulemus \u003d MySQL_Query ($ Päring); Kui ($ tulemus \u003d\u003d tõsi) (kaja "edukas!";) muidu (ECHO "viga!
".mysql_error ();)

Väärtuste saamine andmebaasist

Nüüd kõige huvitavam. Kui me midagi salvestasime, siis peaksite tagasi minema? Näiteks peame kasutajatelt tabeli saama kõik joone, kus nimi veerg on võrdne RUSLANiga. Selleks vajame veidi erinevat koodi kui esimestes näidetes. Siin on tegelikult tema:

$ Query \u003d "Vali * kust" NAME` \u003d "RUSLAN"; $ Tulemus \u003d MySQL_Query ($ Päring); Kui ($ tulemus \u003d\u003d tõsi) (kaja "edukas!";) muidu (ECHO "viga!
".mysql_error ();) $ andmed \u003d mysql_fetch_array ($ tulemus); / * Nüüd salvestatakse tabeli andmed muutujana * /

Siin me vajame teise funktsiooni, salvestada valitud andmed muutuja (massiiv) PHP. Valitud stringiga pöördumiseks kirjutame selliselt:

$ Andmed ["veeru nimi"]

see tähendab, et saada perekonnanimi valitud liinist (kus nimi oli Ruslan), peaksime kirjutama järeldusele:

eCHO $ \u200b\u200bandmed ["perekonnanimi"];

Ja kui tabelist proovide võtmisel kirjutasin valiku *, see Tärn tähendab, et peate valima kõik veerud stringist. Kui me vajame näiteks, valige ainult perekonnanimi, kirjutage valiku "perekonnanimi". Ja proovide võtmiseks korraga mitu rida tabelist, peab tsükkel olema vajalik ka nende väljundiks. See on näiteks siis, kui näiteks rida RUSLAN veerg on mitu. Siin on kood:

$ Query \u003d "Vali * kust" NAME` \u003d "RUSLAN"; $ Tulemus \u003d MySQL_Query ($ Päring); Kuigi ($ andmed \u003d mysql_fetch_array ($ tulemus)) (ECHO $ \u200b\u200bandmed ["nimi"]. "
"$ Andmed [" perekonnanimi "]."


"; }

Nüüd kuvatakse kõik liinid, kust nimi veerg võrdub Ruslani väärtusega.

Siinkohal kohtusite peamiste juhtimisfunktsioonidega mySQL andmebaas otse pHP-skript.

Selles artiklis õpid saada andmebaasi taotlused PHP kaudu. See artikkel on väga oluline ja teil on vaja aru saada. Kuid ma rahuldan teid - materjal on väga lihtne, seega ei tohiks olla raskusi.

Enne artikli teemale liikumist hoiatan ma eelnevalt, et ma ei vabasta üksikasjalikult sQL keel. Kõik vajalikud andmed, mis on ette nähtud pühendatud kategoorias ja siin oleme ainult me töötame MySQL-ga PHP-ga.

Nüüd mine K. andmebaasi taotluste saatmine PHP-le:


}
$ Mysqli-\u003e Päringu ("Sisestage Mytablable (nimi, e-posti) väärtused (" Myname "," [E-posti kaitstud]")");
$ MySQli-\u003e Sule ();
?>

Selles näites oleme ühendatud andmebaasi, kontrollisime ühenduse edu, saatis meetodi abil taotluse päring ()Ja seejärel sulges ühendus. Nagu näete, on kõik väga lihtne. Et saata SQL päringud Lihtsalt üks meetod - päring ()Seetõttu on sel juhul kõik ebameeldiv.

Nüüd veidi keerulisemaks ülesandeks. Vaatame tagasipöördumise taotlusi tulemus_set. - tulemus. Kõige populaarsem taotlus tulemus_set. - See on tabeli andmete valim. Järgmises näites teeme andmete valimi ja seejärel kokku tulemus:

$ mysqli \u003d @new mysqli ("localhost", "admin", "pass", "Mybase");
Kui (mysqli_connect_errno ()) ()) (
ECHO-ühendus ei ole võimalik: ".mysqli_connect_Error ();
}
$ tulemuste_set \u003d $ mysqli-\u003e
Kuigi ($ rida \u003d $ tulemus_set-\u003e fetch_assoc ()) ()) (
PRINT_R ($ rida);
ECHO "
";
}
$ tulemuste_set-\u003e Sule ();
$ MySQli-\u003e Sule ();
?>

Alustada, ma seletan vähe, mis on tulemus_set.. Tulemus_set. - See on tabel tulemusega. Sellel tabelis on dokumendid (lauajooned). Kõigi dokumentide väljundi jaoks peate liikuma iga tabeli joont ja tühistate selle. Ja nüüd ma selgitan näidet: pärast taotluse saatmist oleme moodustatud tulemus_set.. Siis me määrame tsüklis muutuja rida Järgmise rea väärtus, mis on ühemõõtmeline massiiv, mis tagastab meetodi fetch_assoc (). Kui kõik jooned on otsa saanud, meetod fetch_assoc () tagastama valeja vabastatakse tsüklist. Sees tsüklid samas Me lihtsalt tuletame massiivi silumisfunktsiooni abil. pRINT_R ()Kuigi kindlasti oleks võimalik kasutada igaühele.Aga nüüd ei ole see vajalik.

Olgem lühidalt kokku, kuidas töötada tulemus_set.:

  1. Vastu võtma tulemus_set.Saattes asjakohase taotluse andmebaasi.
  2. Tsükli iga iteratsiooni määramiseks järgmine rida (salvestamine) tulemus_set. meetodi kasutamine fetch_assoc () Mõni muutuja rida. Siis saate selle muutujaga töötada ühemõõtmelise assotsiatsioonilise massiivi abil, kus võtmed on tabeli väljade nimed ja väärtused vastavad praegusele sisenemisele.
  3. Kindlasti sulgege tulemus_set. Meetod sulge ()Ressursside katmiseks.

Kuidas te meetodi täheldasite fetch_assoc () Tagastab järgmise dokumendi alati. See tähendab esimest esimest, siis 2., siis 3. ja nii edasi. Kui teil on hea programmeerimiskogemus, siis te arvate kohe, et see on tingitud sisemise kursorist, mida te muidugi teisaldab. Kus seda kasutatakse? Näiteks saab seda kasutada, kui teil on vaja töötada tulemus_set. mitte 1 , aga 2 Rohkem kui üks kord. Sama taotluse ümberkujundamiseks saate lihtsalt kursorit algusse liigutada. Ja siis saate uuesti kaasata tulemus_set. Kasutades fetch_assoc () meetodit.

Positsiooni positsiooni muutmiseks on meetod data_seek ()mis võtab täisarv 0 enne " andmete arv - 1"Vastavalt tõuseb kursor vastava salvestusparameetrile:

$ mysqli \u003d @new mysqli ("localhost", "admin", "pass", "Mybase");
Kui (mysqli_connect_errno ()) ()) (
ECHO-ühendus ei ole võimalik: ".mysqli_connect_Error ();
}
$ tulemuste_set \u003d $ mysqli-\u003e päringu ("valige * Mytable");
$ tulemuste_set-\u003e Num_rows;
Kuigi ($ rida \u003d $ tulemus_set-\u003e fetch_assoc ()) ()) (
PRINT_R ($ rida);
ECHO "
";
}
$ Tulemuste_set-\u003e Data_seek (0);
Kuigi ($ rida \u003d $ tulemus_set-\u003e fetch_assoc ()) ()) (
PRINT_R ($ rida);
ECHO "
";
}
$ tulemuste_set-\u003e Sule ();
$ MySQli-\u003e Sule ();
?>

Selles näites toome me andmete arv tulemustes_ses Kinnisvara kasutamine num_rows. Ja ka tutvunud meetodiga data_seek (). See tähendab, et me läksime üle kogu tulemuse, seejärel tagastas kursorit 0 Y. Salvestage ja jälle läks selle tulemuse üle.

Selles artiklis kordasime ühendust andmebaasi ja sulgemise ühenduse sulgemise. Ja ka õppinud kuidas saata andmebaasi taotlusi PHP kaudu. Õppinud, kuidas saada tulemus_set. Ja kuidas temaga töötada. See on kõik, mida pead teadma eduka töö MySQL-ga PHP-s.

MySQL-i andmebaasi maksimaalse tagasipöördumise saamiseks on oluline mõista, kuidas ühendada kasutajaprogrammist PHP-le MySQL andmebaasile.

Käesolevas juhendis kirjeldatakse järgmisi kolme meetodeid koos vastava programmi näite programmi PHP, mis selgitab, kuidas ühendada PHP andmebaasi.

  • Ühendus MySQLI laienduse abil (soovitatav)
  • Ühendus PDO-ga (soovitatav)
  • Ühendus traditsiooniliste funktsioonide abil aegunud mysql_ (seadeväärtus)

Selleks paigaldage PHP-MYSQL pakett.

Põhineb Redhat jaotus, sealhulgas, kasutage Yum paigaldada PHP-MySQL, nagu allpool näidatud.

Yum installige php-mysql

Sõltuvalt teie süsteemis paigaldame või uuendame järgmisi sõltuvusi:

  • pHP-CLI.
  • php-tavaline
  • pHP-KPN
  • pHP-PGSQL

Pärast seda, kui kõik on installitud, kuvab PHPINFO leht MySQL-mooduli, nagu allpool näidatud:

Kõigi allpool toodud näidete jaoks ühendume MySQL andmebaasi, mis on juba olemas. Kui olete MySQL-i jaoks uus, on see hea koht alustamiseks :.

Märkus: Kõik, mida siin kirjeldatakse, töötab ka Mariadbiga, kuna see töötab MySQL-is.

1. PHP-ga ühendamine MySQLI pikendamise abil

MySQLI tähendab MySQL paranenud.

Pange tähele, et enamik jaotusi (näiteks CentOS), PHP-MySQLI on juba osa Php-MySQL pakendist. Seega ei pea te PHP-MySQLI paketti otsima ja installima. Kõik, mida pead tegema, on installige PHP-MySQL pakett, et saada oma süsteemi tööle MySQLI laiendus.

Looge järgmine MySQli.php-fail Documeroot Vapache'is:

connect_Error) (die ("Viga: ei saa ühendada:". $ Conn-\u003e Connect_Error);) ECHO "Ühenda andmebaasiga.
"

Ülaltoodud:

  • MySQLI - see funktsioon algatab uue ühenduse, kasutades MySQLI laiendus. See funktsioon võtab neli argumenti:
    1. Host nimi, kus MySQL andmebaasi töötab
    2. MySQL-ühenduse kasutajanimi
    3. MySQL kasutaja parool
    4. MySQL andmebaas ühendus.
  • Päringu funktsioon - kasutage seda MySQL-i taotluse määramiseks. Selles näites valime töötaja andmebaasi nimi veeru.
  • Lõpuks kuvame nuM_rows muutuja abil valitud ridade arv. Me sulgeme ka ühenduse eespool näidatud.

Ühenda andmebaasi. Stringide arv: 4

MÄRKUS. Kui üritate ühendada kaugand MySQL-andmebaasiga, saate seda teha, et vältida vastuvõtva ühenduse viga: kuidas lubada MySQL-kliendil MySQL-i kaugserveriga ühendust luua.

2. Ühendus PHP-ga MySQL-iga PDO laiendamisega

KPN tähendab PHP andmeobjekte.

PDO_MYSQL rakendab PPR-i liidese, mida Phr pakub programmi ühendamiseks MySQL andmebaasi.

Enamikus Linuxi jaotustes (näiteks Centos ja RedHat) on PHP-PDO pakend juba PHP-MySQL-pakendis. Seega ei pea te PHP-PDO paketti otsima ja installima. Kõik, mida pead tegema, on paigaldada Php-MySQL pakett, et saada oma süsteemis PDO_MYSQL PHP töötamise laiendus.

Looge oma Apache Documerootis järgmine MySQL-PDO.PHP fail:

setTTribute (KPN :: attr_errmode, KPN :: errmode_exception); ECHO "Ühenda andmebaasiga.
"; $ SQL \u003d" Vali nimi töötaja "; Prindi" Töötaja nimi:
"; Foreach ($ conn-\u003e päringu ($ SQL) $ rida) (Prindi $ rida [" nimi "]."
";) $ Conn \u003d null;) saagi (kaja" viga: ei saa ühendada: ". $ Err-\u003e GetMessage ();)?\u003e

Ülaltoodud:

  • uus KPN - loob uue KPN-i objekti, mis võtab vastu kolm argumenti:
    1. MySQL-ühendus string: on vormingus "MySQL: Host \u003d $ Hostname; dbname \u003d $ dbname". Ülaltoodud näites tegutseb andmebaas kohalikul hostil ja ühendame AndreyExi andmebaasi.
    2. Kasutajanimi MySQL-i ühendamiseks.
    3. MySQLi kasutaja parool.
  • $ SQL Muutuja - SQL-i päringu loomine, mida soovite täita. Selles näites valime töötaja tabelis nimekirja.
  • päring ($ SQL) - siin me teeme SQL-i taotluse, mida me just loome.
  • foreach - siin me jookseme läbi ülaltoodud käsud ja salvestame need muutuva rida $ ja siis näitame neid printimise käsu abil.
  • MySQL-KPN-i sulgemiseks ühenduse sulgemiseks, lihtsalt lähtestage $ Conn-muutuja väärtus.

Kui helistate MySQli.php-le brauserist, näete järgmise järelduse, mis näitab, et PHP-l oli võimeline ühendust MySQL-andmebaasi ja teha andmete valimi.

Ühenda andmebaasi. Ametniku nimi: SiteSlan Maria Oleg

3. PHP ühendamine MySQL_ funktsioonide abil (seadepunkt)

Kasutage seda meetodit ainult siis, kui kasutate vanemat PHP-versiooni ja seda ei saa mingil põhjusel uue versiooni uuendada.

See on aegunud PHP 5.5 laiendus. Aga alustades PHP 7.0 versioonist, ei tööta see, nagu see on eemaldatud.

Alustades PHP 5,5 versioonidest, kui kasutate neid funktsioone, tekitavad nad e_deprected vea.

Looge Apache Documeroot all olev MySQL-Legacy.php-fail:

"; $ tulemus \u003d mysql_query); $ rida \u003d mysql_fetch_row ($ tulemus); ECHO" töötaja 1: ", $ rida,"
n "; mysql_close ($ conn);?\u003e

Ülaltoodud:

  • MySQL_Connect funktsioon võtab kolm argumenti: 1) hostinimi, kus MySQL andmebaasi töötab, 2) kasutajanimi ühendamiseks MySQL, 3) Parool MySQL. Siin ühendate MySQL-andmebaasi, mis jookseb kohaliku serveriga, kasutades root kasutajanime ja parooli.
  • MySQL_Select_db funktsioon - nime järgi järgmiselt, valib andmebaasi, millele soovite ühendada. See on võrdne juhtimisega "Kasuta". Selles näites ühendame AndreyExi andmebaasi.
  • Funktsioon MySQL_Query - Kasutage seda MySQL-i taotluse määramiseks. Selles näites valime töötaja andmebaasi nimi veeru.
  • mySQL_Fetch_row - Kasutage seda funktsiooni, et eraldada ridu SQL-i päringust, mida me just loome.
  • Lõpuks sulgege ühendus MySQL_Close käsu abil, nagu eespool näidatud.

Kui helistate MySQL-Legacy.php oma brauseri, näete järgmist järeldust, mis näitab, et PHP on suutnud ühendada MySQL andmebaasi ja teha andmeproovi.

Ühenda andmebaasi. Töötaja 1: AndreyEx

PHP ...

Ühenduse loomine erinevates viisides:

1) Vana Deadovski ühendamise meetod MySQL-ga:

$ Conn \u003d mysql_connect ($ db_hostname, $ db_username, $ db_password) või surra ("Serveriühendus");
mysql_select_db ($ db_database, $ conn) või surra ("ei õnnestunud ühendada andmebaasi");

Alltoodud muutuja selgitus.

Samal ajal kasutatakse funktsioone:

  • mysql_connect () - serveriga ühendamiseks;
  • mysql_select_db () - andmebaasi ühendamine;

Samal ajal kontrollme pidevalt vea olemasolu sel viisil: või sureb (viga on nii "); - tõlgib nii või sureb sellise veaga - leida kohe, kus viga on.

config.php.

// muutujad ühendamiseks andmebaasiga
$ Host \u003d "localhost"; / Host
$ Kasutajanimi \u003d "Root"; // Parool ühendamiseks andmebaasi
$ parool \u003d ""; // parool varastada andmebaasi - kohalikul arvutil võib olla tühi väärtus.
$ andmebaas_name \u003d "My-Dolgi"; // BD nimi

// vana eluviis koos andmebaasiga
Mysql_connect ($ host, $ kasutajanimi, $ parool) või surra ("Ma ei saa ühendada ühendi loomiseks");

// Valige andmebaas. Kui viga kuvatakse
mysql_select_db ($ andmebaas_name) või surra (mysql_error ());

index.php.

nõuda_once "config.php";


$ Tulemus \u003d MySQL_Query ("Vali nimi, raha Dolgis järjekorras raha Desc Limit 5") või Die (MySQL_Error ());



";


Kuigi ($ rida \u003d mysql_fetch_assoc ($ tulemus)) (
";
}


mysql_free_result ($ tulemus);

// sulgege ühendus
mysql_close ();

2) Progressiivsem menetlusstiil - ühendamine andmebaasiga MySQLI-ga:

See meetod:

  1. mugav;
  2. kiiremini kuni 40 korda;
  3. parem ohutus;
  4. on uusi funktsioone ja funktsioone;

Näide ühenduse andmebaasiga PHP-ga tabelist prooviga

config.php.

// Sotsioloogia andmebaasiga
$ Link \u003d MySQli_Connect ("Localhost", "Kasutajanimi", "Parool", "NAME-andmebaas"); // Siin ma sisestan teie andmed otse: kasutajanimi, parool ja andmebaasi nimi, esimene väli tavaliselt localhost

// Ühenduse vea väljund
Kui (! $ Link) (
ECHO "Viga andmebaasiga ühendav viga. Veakood:". mysqli_connect_error ();
Välju;
}

Märkus - kõikjal kasutage mysqli, mitte mysql !!!

index.php.

nõuda_once "config.php";

// Taotluse täitmine. Kui viga kuvatakse
Kui ($ tulemus \u003d mysqli_query.($ Link, "Vali nimi, raha Dolgis järjekorras raha Desc Limit 5")) (

Echo "Kellele pean laskuma:

";

// Päringu tulemuste valik
Samas ($ rida \u003d mysqli_fetch_assoc($ tulemus)) (
Echo $ rida ["nimi"]. "Võlaga." $ Rida ["raha"]. "rubla.
";
}

Kasutatud mälu vabastamine
mysqli_free_result($ tulemus);

// sulgege ühendus
mysqli_close($ Link.);
}

Nagu näete, mõned hetked muutunud (eraldatud kaldkirjas).

3) Objektile orienteeritud meetod MySQL-andmebaasi ühendamiseks - meetodite ja klasside kasutamine:

Miinused: raskem ja vähem vastuvõtlikud vigadele.

Plussid: lühidus ja mugavus kogemuste programmeerijate jaoks.

$ Conn \u003d New MySqli ($ db_hostname, $ db_username, $ db_password, $ db_database);
Kui ($ conn-\u003e connect_errno) (
Die ($ Conn-\u003e Connect_Error);
) End (kaja "ühendus andmebaasiga on edukalt loodud";)

siin on see põhimõtteliselt intuitiivne:

  • $ db_hostname on võõrustaja (enamasti localhost),
  • $ db_database - bD nimi;
  • $ Db_username ja $ db_password - kasutajanimi ja parool vastavalt!

Näide seoses andmebaasi PHP stiilis OOP proovi tabelist

config.php.

// Sotsioloogia andmebaasiga
$ mysqli \u003d uus mysqli ("localhost", "Kasutajanimi", "Parool", "NAME-andmebaas"); // Siin ma sisestan teie andmed otse: kasutajanimi, parool ja andmebaasi nimi, esimene väli tavaliselt localhost

// Ühenduse vea väljund
Kui ($ mysqli-\u003e connect_error) (
Die ("Viga andmebaasi ühendamine: (" $ mysqli-\u003e connect_errno. ")". Mysqli_connect_error);
}

Märkus - kõikjal kasutage mysqli, mitte mysql !!! Erinevalt eelmisest meetodist ilmuvad nooled "-\u003e", mis näitavad, et see on OOP-stiilis.

index.php.

nõuda_once "config.php";

// Taotluse täitmine. Kui viga kuvatakse
Kui ($ tulemus \u003d $ mySQli-\u003e Päring.("Vali nimi, raha Dolgis järjekorras raha Desc Limit 5")) (

Echo "Kellele pean laskuma:

";

// Päringu tulemuste valik
Kuigi ($ rida \u003d $ tulemus-\u003e fetch_assoc.()) {
Echo $ rida ["nimi"]. "Võlaga." $ Rida ["raha"]. "rubla.
";
}

Kasutatud mälu vabastamine
$tulemus-\u003e Sulge ();

// sulgege ühendus
$mySQli-\u003e Sule.();
}

Teile ülesanne - leida erinevusi.

4) suhtlemine andmebaasiga KPNiga:

MySQL-andmebaasi ühendamisel kasutatakse ettevalmistatud väljendeid (valmistamismeetodi abil) ja suurepärase ohutuse tagajärjel suurendab kiirust.

config faili. Eelmisest meetodist! - sama

index.php.

// PDO stiilis kommunikatsiooni MySQL-ga
Kui ($ stmt \u003d $ mysqli-\u003e valmistada ("Vali nimi, Voney Dolgis et raha< ? LIMIT 5")) {

$ Stmt-\u003e Bind_param ("I", $ Summa);
$ SUMPA \u003d 100000;

// Käivita täitmine
$ Stmt-\u003e täita ();

// muutujate väljakuulutamine koristatud väärtuste jaoks
$ Stmt-\u003e Bind_result ($ Col1, $ Col2);

Echo "Kellele pean laskuma:

";

// Päringu tulemuste valik
Kuigi ($ stmt-\u003e fetch ()) (
ECHO $ \u200b\u200bCol1. "Võlaga." $ Col2. "rubla.
";
}

Kasutatud mälu vabastamine
$ Stmt-\u003e Sule ();

// sulgege ühendus
$ MySQli-\u003e Sule ();

Nagu me näeme, on palju raskem ja vajaliku PDO õppimise jaoks on eraldi teema.