MySQL pieprasa piemērus PHP. SQL - pieprasījumi un to apstrāde, izmantojot PHP

Darbs ar MySQL datubāzi ar RNR

Lekciju. Sagatavots Prokhorov vs


1. PDP scenāriju savienojums ar MySQL tabulām

Apsveriet visbiežāk izmantotās funkcijas, kas ļauj jums strādāt ar MySQL datubāzi RNR.

Kad RNR un MySQL mijiedarbojas, programma mijiedarbojas ar DBVS, izmantojot funkciju kopumu.

1.1 Savienojums ar serveri. Funkcijamysql_connect.

Pirms strādāt ar datu bāzi, jums ir jāinstalē ar to tīkla savienojums, kā arī veic lietotāja atļauju. Tas ir MySQL_Connect () funkcija.

resurss MySQL_Connect (]])

Šī funkcija nosaka tīkla savienojumu ar MySQL datubāzi, kas atrodas $ servera uzņēmējā (noklusējums ir localhost, I.E. Pašreizējais dators) un atgriež atvērtā savienojuma identifikatoru. Visi turpmākie darbi tiek veikti ar šo identifikatoru. Visas citas funkcijas, kas uzņem šo identifikatoru (deskriptors) kā argumentu, unikāli definēs izvēlēto datu bāzi. Reģistrējoties, lietotājvārds ir $ lietotājvārds un $ paroles parole (pēc noklusējuma, lietotājvārds, no kura notiek pašreizējais process - atkļūdošanas skripti: sakne un tukša parole):

$ dbpasswd \u003d ""; // parole

// parādīt brīdinājumu

atbalss ("

");

Mainīgie $ blocation, $ dbuser un $ dbpasswd veikala servera nosaukums, lietotājvārds un parole.

1.2 Tarve savienojumu ar serveri. Funkcijamysql_close

Savienojums ar MySQL serveri tiks automātiski aizvērts skripta beigās vai zvanot uz MySQL_Close funkciju

bool mysql_close ()

Šī funkcija pārtrauc savienojumu ar MySQL serveri, un atgriežas taisnība ar veiksmīgu izpildi operācijas un citādi. Funkcija pieņem datu bāzes savienojuma deskriptoru kā argumentu, ko atdod MySQL_Connect funkcija.

$ blokācija \u003d "localhost"; // servera nosaukums

$ dbuser \u003d "sakne"; // Lietotājvārds

$ dbpasswd \u003d ""; // parole

// Ievadiet savienojumu ar datu bāzes serveri

// apspiest kļūdas izejas simbolu @ pirms zvanīšanas funkciju

$ dbcnx \u003d @ mysql_connect ($ blocation, $ dbuser, $ dbpasswd);

ja (! $ dbcnx) // Ja deskriptors ir 0, savienojums nav uzstādīts

// parādīt brīdinājumu

atbalss ("

B. pašlaik Datu bāzes serveris nav pieejams, tāpēc pareizais lapas displejs nav iespējams.");

ja (mysql_close ($ dbcnx)) // lauzt savienojumu

atbalss ("savienojums ar datubāzi tiek pārtraukta");

atbalss ("viņam izdevās pabeigt savienojumu");

1.3 Datu bāzes izveide. Izveidot datu bāzes funkciju

Komanda - datu bāzes izveide ir pieejama tikai servera administratoram, un lielākajā daļā hostinga to nav iespējams veikt:

Izveidot datu bāzes nosaukumu

Izveido jaunu datubāzi ar nosaukuma nosaukuma nosaukumu.

Piemērs darbam ar šo funkciju:

@Mysql_query ("Izveidot datu bāzi $ dBName");

Ieteicams izmantot apostrofus visur ("SQL - komanda") kā līniju ierobežojumi, kas satur SQL komandas. Tas var nodrošināt, ka ne $ mainīgais nejauši tiks interpolēts (I.E. Tas netiks aizstāts ar tās vērtību), un skriptu drošība palielināsies.

Izveidot datu bāzes datu bāzes apkalpes komandu ir pieejama tikai superUser, un nav iespējams veikt vienkāršu lietotājam lielākajā daļā hostinga lietotāju. Tas ir pieejams tikai servera administratoram.

Eksperimentiem, izveidojiet testbase datu bāzi, veicot SQL vaicājumu no komandrindas. Lai to izdarītu, piesakieties MySQL sistēmā un ievadiet komandrinda MySQL:

mySQL\u003e Izveidot datu bāzes testbāzi;

Pēc tam, jums vajadzētu zvanīt:

mySQL\u003e Izmantojiet testbāzi;

Datu bāze ir izveidota:


1.4 Izvēlieties datu bāzi. Funkcijamysql_select_db.

Pirms nosūtīt pirmo pieprasījumu MySQL serverim, jums jānorāda, kura datu bāze mēs gatavojamies strādāt. Šim nolūkam MySQL_SELCECT_DB funkcija ir paredzēta:

bool mysql_select_db (string $ datu bāze_name [, resursu $ link_idifier])

Viņa paziņo PHP, ka turpmākajās darbībās ar $ Link_idifier savienojumu tiks izmantots $ Database_name.

Izmantojot šo funkciju, ir līdzvērtīga zvanīšanas komandai SQL vaicājumā, I.E. MySQL_SELCECT_DB funkcija izvēlas datu bāzi tālākai darbībai, un visi turpmākie SQL vaicājumi attiecas uz izvēlēto datu bāzi. Funkcija ņem nosaukumu datu bāzes_name izvēlēto datu bāzi kā argumentu un resursu savienojuma deskriptoru. Funkcija atgriežas ar veiksmīgu darbību un nepatiesu - citādi:

// savienojuma kods ar datu bāzi

ja (! @mysql_select_db ($ dBName, $ dbcnx))

// parādīt brīdinājumu

atbalss ("

B Tagad datu bāze nav pieejama, tāpēc pareizais lapas displejs nav iespējams.");

1.5 Pārstrādes kļūdas

Ja rodas kļūdas darba laikā ar MySQL (piemēram, tiek piedāvātie uzvedņi nav līdzsvaroti vai nav pietiekami daudz parametru), tad kļūdas ziņojumu un tā numuru var iegūt, izmantojot divas funkcijas, kas aprakstītas zemāk.

Ir svarīgi rūpīgi un izmantot šīs funkcijas savlaicīgi, jo pretējā gadījumā skriptu atkļūdošana var kļūt sarežģītāka.

● Funkcija:

int mysql_errno ()

atgriež jaunākās ierakstītās kļūdas skaitu. Jūs nevarat norādīt $ Link_identfier savienojuma identifikatoru, ja skripta darbības laikā tika uzstādīts tikai viens savienojums.

● Funkcija:

string mysql_error ()

atgriež nevis numuru, bet virkni, kurā ir kļūdas ziņojuma teksts. Tas ir ērti pieteikties atkļūdošanas nolūkos. Parasti MySQL_Error lieto kopā ar dizainu vai mirt (), piemēram:

@Mysql_connect ("localhost", "lietotājs", "parole")

vai mirt ("Kļūda, kas savieno ar datu bāzi:" .mysql_error ());

Operators @, kā parasti izmanto, lai nomāktu standarta brīdinājumu, kas var rasties kļūdas gadījumā.

Iebildums jaunākās versijas RNR brīdinājums MySQL funkcijās pēc noklusējuma nav reģistrētas.

1.6 Savienojums ar MySQL. Fails (config.php.)

Parasti vietnē ir vairāki skripti uzreiz, kuriem jums ir nepieciešama piekļuve tai pašai datubāzei.

Ieteicams piešķirt kodu, kas atbild par savienojumu ar MySQL atsevišķs fails.un pēc tam izveidojiet savienojumu, izmantojot Iekļaut funkciju nepieciešamie skripti.

Ir lietderīgi ievietot funkcijas, lai savienotu, izvēlētu un izveidotu datubāzi uz to pašu failu (config.php), kur mainīgie ir deklarēti ar $ Blookations servera nosaukumu, $ dbuser lietotāja vārdu, paroli $ dbpasswd un nosaukumu $ dBName datu bāzes nosaukums:

Config.php Listing:

//config.php faila kodu, kas satur savienojuma parametrus ar serveri un datu bāzes izvēli

// Parāda kļūdas ziņojumus pārlūkprogrammā

$ blokācija \u003d "localhost"; // servera nosaukums

$ dBName \u003d "Ievietot bāzes nosaukumu" // Datu bāzes nosaukums: izveidots vai jau esošs

$ dbuser \u003d "sakne"; // datu bāzes lietotāja vārds

$ dbpasswd \u003d ""; // parole

// Ievadiet savienojumu ar datu bāzes serveri

// apspiest kļūdas izejas simbolu @ pirms zvanīšanas funkciju

[E-pasts aizsargāts]_Connect ($ blocation, $ dbuser, $ dbpasswd);

ja (! $ dbcnx) // Ja deskriptors ir 0, savienojums ar datu bāzes serveri nav instalēts

// parādīt brīdinājumu

atbalss ("

Pašlaik datu bāzes serveris nav pieejams, tāpēc lapas pareizais displejs nav iespējams.

");

// Izveidojiet $ DBNAME datu bāzi - to var darīt tikai superuser

// Ja datubāze jau pastāv, būs ne kritiska kļūda

@Mysql_query ("Izveidot datu bāzi, ja nepastāv $ dBName");

// savienojuma kods ar datu bāzi: mēs veiksim nepārprotamu izvēli jaunizveidoto datu bāzi vai esošo datu bāzi

// apspiest kļūdas izejas simbolu @ pirms zvanīšanas funkciju

ja ( [E-pasts aizsargāts]_select_db ($ dBName, $ dbcnx)) // Ja deskriptors ir 0, datu bāzes savienojums nav uzstādīts

// parādīt brīdinājumu

atbalss ("

Pašlaik datu bāze nav pieejama, tāpēc lapas pareizais displejs nav iespējams.

");

// mazs papildu funkcijakas parāda ziņojumu

// par kļūdu datu bāzes pieprasījuma kļūdas gadījumā

funkcija PutError ($ message)

atbalss (");


2. Veikt datu bāzes vaicājumus

2.1. Tabulas izveide. Funkcija Izveidot tabulu:

Izveidojiet tabulas tabulas nosaukumu (Namepole tips, Namepole tips)

Šī komanda datu bāzē izveido jaunu tabulu ar kolonnām (laukiem), kas definēti ar saviem vārdiem (nosaukumiem) un norādītajiem veidiem. Pēc tabulas izveides būs iespējams pievienot ierakstus, kas sastāv no šajā komandā uzskaitītajiem laukiem.

Listing test_11.php. Programma, kas izveido jaunu tabulu datubāzē:

ietver "config.php"; // savienojumu ar serveri un datu bāzes izvēli

mysql_query ("Izveidot tabulu, ja nepastāv cilvēki

id int auto_increment primāro atslēgu,

vai mirt ("mysql kļūda:" .mysql_error ());


Šis skripts izveido jaunu cilvēku tabulu ar diviem laukiem. Pirmajam laukam ir int tips (vesels skaitlis) un nosaukuma ID. Otrais tipa teksts (teksta virkne) un vārda nosaukums.

Ja tabula pastāv, dizains vai mirt () darbosies.

Izvēles frāze Ja tā nav pārsniegta, ja tas ir norādīts, saka MySQL serveris, ka tas nedrīkst radīt kļūdas ziņojumu, ja tabula ar norādīto nosaukumu jau pastāv datu bāzē.

Atcerieties tos laikus, kad es nezināju, ko mysql Un bieži meklēja šādus rakstus internetā. Bet kāda iemesla dēļ tie tika reti atrasti. Tagad es nolēmu izvietot šādus noderīgus rakstus par mysql un pHP. Tas kļuva vēl viens. Es centīšos rakstīt visu pieejamā valodā.

darba sākšana ar MySQL un PHP

Tātad, lai sāktu, mums ir nepieciešams vietējais serveris, lai tiktu uzsākta pHP skripti un izveidojiet savienojumu ar datu bāzi (es pēc tam zvanīšu datubāzei, kas nozīmē "datu bāze"). Ja jums joprojām nav vietējā servera, vispirms izlasiet instalēšanu un konfigurāciju localhost.un pēc tam sāciet studēt datubāzi mysql un tās DBVS (datu bāzes pārvaldības līdzekļi).

Ja jums jau ir šis serveris, mēs to darām. Lai sāktu ar, es vēlos jūs iepazīstināt ar DBVS PhpMyAdmin.Tas ļauj jums pārvaldīt (pievienot, dzēst, modificēt) ierakstus datubāzē.

Šī ir galvenā lapa DBMS phpMyAdmin.. No šejienes jūs varat izveidot savu datu bāzi, un saglabāt nepieciešamos ierakstus tajā. Tas ir ļoti ērti, veidojot vietnes, jo informācija ir strukturēta, un jūs varat ļoti ātri saņemt jebkuru ierakstu no datu bāzes.

Kā jau minēts, raksta pirmā daļa, iepazīšanās ar mysql un phpMyAdmin.. Es domāju, ka tagad jūs saprotat, ko MySQL ir un mēs varam sākt pētīt phpMyAdmin funkcionalitāti. Lai sāktu darbu, mums ir jāizveido pašu datu bāze (datu bāze). Viņai būs savs vārds, par kuru mēs meklēsim viņu vēlāk.

Šeit ir datu bāzes struktūras vispārējā struktūra:

Lai izveidotu datu bāzi, ievadiet ievades lauku zem "Izveidot jaunu datu bāzi" līniju (uz phpMyAdmin galvenajā lapā) jebkura nosaukuma (nevis kirilics!) Par nākotnes bāzi. Es izveidoju datubāzi "Baza". Tagad, pēc BD struktūras diagrammas, mums ir nepieciešams, lai veiktu tabulu. Lai to izdarītu, pēc pamatnes izveides jums būs tik logs:

Šeit es izveidoju tabulu ar lietotāju vārdu un 3 laukiem tajā. Turklāt phpMyAdmin lūgs mums iestatīt katras jomas struktūru:

Šeit "Lauks" kolonnā jums ir jānorāda nosaukums, jo "Type" norādiet datu tipu, kas tiks glabāti tur (INT ir numurs, Varchar - līnija vai mazs (!) Teksts). Turklāt jūs norādāt lauku nosaukumu "ID" parametrs "Auto_inCreamment", kas nozīmē, ka tas palielinās katru reizi, ievietojot visus datus, un iestatiet parametru "primāro atslēgu" (ievietojiet roomer), tas nozīmē, ka pirmajā slejā mēs varam Noteikti identificējiet lauku.

"Noteikti identificējiet lauku" nozīmē, pat tad, ja vārds un uzvārds būs tāds pats, ID kolonnai būs dažādas vērtības (kad tas automātiski palielinās katrā reizē).

Tagad noklikšķiniet uz "Saglabāt". Tādējādi mēs izveidojām lietotāju tabulu, kurā mēs varam saglabāt vārdu un uzvārdu (ID nav jāievieto, MySQL darīs visu, kas mums būs), datu bāzes lietotājiem. Mēs izveidojām tabulu uzglabāšanai ierakstus. Un kā tos ievietot tur? Lasiet tālāk

Izvēlieties izvēlnē "Paste" un rakstiet vēlamās vērtības nepieciešamajiem laukiem. Tagad, kā izdzēst vai mainīt vērtības MySQL datu bāzē no phpMyAdmin datubāzes ... Lai izdzēstu, vienkārši dodieties uz izvēlni Pārskats un nospiediet sarkano krustojumu pretī ierakstam:

Un rediģēšanai noklikšķiniet uz zīmuļa un nomainiet nepieciešamos laukus. Nu, šajā stundā ir pabeigta. Tagad jūs varat pārvaldīt MySQL datu bāzi, izmantojot phpMyAdmin. Nākamajā stundā es iemācīšu jums uzglabāt, saņemt, dzēst un atjaunināt datus datu bāzē izmantojot PHP.. Tas ir ļoti ērts un praktisks.

Darbs ar MySQL datu bāzi no PHP

Tātad, vispirms jums ir jāiemācās izveidot savienojumu ar jau zināmā datubāzi. Lai to izdarītu, tiek izmantots šis kods:

Iepriekš minētajā kodā es savienoju ar Localhost serveri, izmantojot pieteikšanos sakne Kurš neprasa paroli (tāpēc es to nenorādītu). Pēc savienojuma ar datu bāzi mēs varam veikt visas šīs darbības, kas tika veiktas PhpMyAdmin. Tas ir, ievietojiet, dzēst, mainīt un iegūt dažādas informācijas. Tagad uz punktiem:

Ievietojiet ierakstus SQL datubāzē PHP

$ Vaicājums \u003d "Ievietot" tabulā "(" Norādiet lauku "," Norādiet lauka ") vērtības (" jebkura vērtība "," jebkura vērtība ")"; $ rezultāts \u003d mysql_query ($ vaicājums); Ja ($ rezultāts \u003d\u003d taisnība) (atbalss "veiksmīgs!";) cits (ECHO "Kļūda!
".mysql_error ();)

Tas ir, ieliktnis tiek veikts ar ieliktņa funkciju. Ja viss gāja veiksmīgi, MySQL atgriezīsies patiesā vai citādi - nepatiesa.

Laukus var norādīt vismaz cik daudz, galvenais ir tas, ka tie visi pastāvēja datubāzē. Tas ir, piemēram, ir tabula, kurā ir lauki "nosaukums", "uzvārds" un "pilsēta". Lai to ievietotu, mēs izmantosim šādu kodu:

$ Vaicājums \u003d "Ievietojiet" lietotāju (`Name`," uzvārds ",` City`) vērtības ("Ruslan", "Huzin", "Kokshetau") "; $ rezultāts \u003d mysql_query ($ vaicājums); Ja ($ rezultāts \u003d\u003d taisnība) (atbalss "veiksmīgs!";) cits (ECHO "Kļūda!
".mysql_error ();)

Noņemot ierakstus no SQL datu bāzes uz PHP

Dzēst tiek veikta ar dzēšanas funkciju. Šim tam būs kaut kas līdzīgs šim kodam:

$ Vaicājums \u003d "Dzēst no" lietotājiem, kur `name` \u003d" Ruslan "; $ rezultāts \u003d mysql_query ($ vaicājums); Ja ($ rezultāts \u003d\u003d taisnība) (atbalss "veiksmīgs!";) cits (ECHO "Kļūda!
".mysql_error ();)

Tas ir, mēs izdzēšam visas līnijas no USSS tabulas (labi vai vienu), kur slejā nosaukums ir vienāds ar Ruslan vērtību.

Vērtību maiņa MySQL datubāzē PHP

Mēs varam arī veikt izmaiņas jau esošajos ierakstos tabulā. Piemēram, mums ir jāaizstāj vārds nosaukuma kolonnas pēc kārtas, kur uzvārds kolonna ir Huzin. Lai to izdarītu, veiciet šādu kodu:

$ Query \u003d "Update" lietotāju komplekts `Name` \u003d" myname "kur" uzvārds "\u003d" Huzin "; $ rezultāts \u003d mysql_query ($ vaicājums); Ja ($ rezultāts \u003d\u003d taisnība) (atbalss "veiksmīgs!";) cits (ECHO "Kļūda!
".mysql_error ();)

Vērtības no datu bāzes iegūšana

Tagad interesantākais. Kad mēs kaut ko ierakstījām, tad jums vajadzētu atgriezties? Piemēram, mums ir nepieciešams, lai saņemtu no lietotāju tabulas visu līniju, kur nosaukuma kolonna ir vienāda ar Ruslan. Lai to izdarītu, mums ir nepieciešams nedaudz atšķirīgs kods nekā pirmajos piemēros. Šeit ir viņu:

$ Vaicājums \u003d "Izvēlieties * no kurienes" nosaukums "\u003d" Ruslan "; $ rezultāts \u003d mysql_query ($ vaicājums); Ja ($ rezultāts \u003d\u003d taisnība) (atbalss "veiksmīgs!";) cits (ECHO "Kļūda!
".mysql_error ();) $ dati \u003d mysql_fetch_array ($ rezultāts); / * Tagad tabulas dati tiek saglabāti mainīgā * /

Šeit mums vajadzēja citu funkciju, lai ierakstītu atlasītos datus mainīgā (masīvā) PHP. Lai sazinātos ar izvēlēto virkni, mēs rakstām šādi:

$ Dati ["kolonnas nosaukums"]

tas ir, lai saņemtu uzvārdu no izvēlētās līnijas (kur vārds bija Ruslan), mums vajadzētu rakstīt uz secinājumu:

echo $ dati ["uzvārds"];

Un, kad paraugu ņemšana no galda es uzrakstīju Select *, šis zvaigznīte nozīmē, ka jums ir nepieciešams izvēlēties visas kolonnas no virknes. Ja mums ir nepieciešams, piemēram, izvēlieties tikai uzvārdu, rakstiet izvēlieties `uzvārdu. Un par paraugu ņemšanu uzreiz vairākas līnijas no galda, cikls būs vajadzīgs arī to produkcijai. Tas ir, ja, piemēram, rindas ar Ruslan kolonnu būs vairākas. Šeit ir kods:

$ Vaicājums \u003d "Izvēlieties * no kurienes" nosaukums "\u003d" Ruslan "; $ rezultāts \u003d mysql_query ($ vaicājums); kamēr ($ dati \u003d mysql_fetch_array ($ rezultāts)) (echo $ dati ["nosaukums"]. "
"$ Dati [" uzvārds "]."


"; }

Tagad tiks parādītas visas rindas, no kurām tiks parādīta nosaukuma sleja ir vienāda ar Ruslāna vērtību.

Šeit jūs tikās ar galvenajām kontroles funkcijām mySQL datu bāze tieši no pHP skripts.

Šajā rakstā mēs uzzināsim nosūtiet pieprasījumus datubāzei, izmantojot PHP. Šis raksts ir ļoti svarīgs, un jums ir nepieciešams saprast. Tomēr es jūs nomierināšu - materiāls ir ļoti vienkāršs, tāpēc nevajadzētu būt grūtībām.

Pirms pāriet uz raksta tēmu, es iepriekš brīdinu, ka es detalizēti neizjaukt sQL valoda. Visu nepieciešamo informāciju, kas izjaukta kategorijā, un šeit mēs esam tikai mēs strādājam ar MySQL, izmantojot PHP.

Tagad dodieties uz K. datu bāzes pieprasījumu nosūtīšana PHP:


}
$ MySQLi-\u003e vaicājums ("Ievietojiet myTable (vārdu, e-pasta) vērtības (" myname "," [E-pasts aizsargāts]")");
$ mysqli - cieši ();
?>

Šajā piemērā mēs pievienojamies datu bāzei, pārbaudīja savienojuma panākumus, nosūtīja pieprasījumu, izmantojot metodi vaicājums ()Un pēc tam aizvēra savienojumu. Kā redzat, viss ir ļoti vienkāršs. Nosūtīt jebkuru SQL vaicājumi tikai viena metode - vaicājums ()Tāpēc šajā gadījumā viss ir neparasti vienkāršs.

Tagad nedaudz sarežģī uzdevumu. Apskatīsim pieprasījumus, kas atgriežas rezultāts. - Rezultāts. Populārākais pieprasījums rezultāts. - Tas ir paraugs datu no tabulas. Nākamajā piemērā mēs veiksim datu paraugu un pēc tam apkoposiet rezultātu:

$ mysqli \u003d @new mysqli ("localhost", "admin", "caurlaide", "myBase");
ja (mysqli_connect_errno ()) (
ECHO "savienojums nav iespējams:" .mysqli_connect_Error ();
}
$ rezultāts_set \u003d $ mysqli-\u003e
Kamēr ($ Row \u003d $ Resate_Set-\u003e Fetch_assoc ()) (
Print_r ($ Row);
Atbalss "
";
}
$ rezultāts_set-\u003e cieši ();
$ mysqli - cieši ();
?>

Sākt ar, es nedaudz paskaidrošu, kas ir rezultāts.. Rezultāts. - Tas ir tabula ar rezultātu. Šajā tabulā ir ierakstu kopums (galda līnijas). Un visu ierakstu izejai jums ir jāpārvieto katra galda līnija un jāizņem tā. Un tagad es izskaidroju piemēru: pēc pieprasījuma nosūtīšanas mēs izveidojamies rezultāts.. Tad mēs piešķiram mainīgo ciklā rinda Nākamās rindas vērtība, tas ir, viena dimensiju masīvs, kas atgriež metodi fetch_assoc (). Kad visas līnijas beidzas, metode fetch_assoc () atgriešanās nepatiessun tiks atbrīvots no cikla. Iekšējie cikli kamēr Mēs vienkārši iegūstam masīvu, izmantojot atkļūdošanas funkciju. print_r ()Lai gan, protams, būtu iespējams atsaukt, izmantojot katram.Bet tagad tas nav nepieciešams.

Īsimies apkopot, kā strādāt rezultāts.:

  1. Saņemt rezultāts.Nosūtot atbilstošu pieprasījumu datubāzei.
  2. Ciklā katrā iterācijā, lai piešķirtu šādu rindu (ierakstu) no rezultāts. izmantojot metodi fetch_assoc () Daži mainīgie rinda. Tad jūs varat strādāt ar šo mainīgo, jo ar viendimensiju asociācijas masīvu, kurā atslēgas ir nosaukumi tabulas laukiem, un vērtības atbilst pašreizējam ierakstam.
  3. Noteikti aizveriet rezultāts. Metode tuvu ()Lai segtu resursus.

Kā jūs pamanījāt metodi fetch_assoc () Atgriež nākamo ierakstu vienmēr. Tas ir, pirmais 1, tad 2., tad 3. un tā tālāk. Ja jums ir laba programmēšanas pieredze, jūs uzreiz uzminēsiet, ka tas ir saistīts ar iekšējo rādītāju, kuru jūs, protams, var pārvietoties. Kur tas tiek izmantots? Piemēram, to var izmantot, ja jums ir nepieciešams strādāt rezultāts. ne 1 , bet 2 Vairāk nekā vienreiz. Lai atkārtoti izveidotu to pašu pieprasījumu, jūs varat vienkārši pārvietot rādītāju uz sākumu. Un tad jūs varat atkal iesaistīties rezultāts. Izmantojot fetch_assoc () metodi.

Lai mainītu rādītāja pozīciju, ir metode data_seek ()kas ņem veselu skaitli no 0 pirms " ierakstu skaits - 1", attiecīgi, rādītājs palielinās līdz attiecīgajam ieraksta parametram:

$ mysqli \u003d @new mysqli ("localhost", "admin", "caurlaide", "myBase");
ja (mysqli_connect_errno ()) (
ECHO "savienojums nav iespējams:" .mysqli_connect_Error ();
}
$ rezultāts_set \u003d $ mysqli-\u003e vaicājums ("izvēlieties * no myTable");
$ Resate_set-\u003e Num_rows;
Kamēr ($ Row \u003d $ Resate_Set-\u003e Fetch_assoc ()) (
Print_r ($ Row);
Atbalss "
";
}
$ Rezultāts_set-\u003e Data_seek (0);
Kamēr ($ Row \u003d $ Resate_Set-\u003e Fetch_assoc ()) (
Print_r ($ Row);
Atbalss "
";
}
$ rezultāts_set-\u003e cieši ();
$ mysqli - cieši ();
?>

Šajā piemērā mēs celta ierakstu skaits rezultātā Izmantojot īpašumu num_rows. Un arī iepazinies ar metodi data_seek (). Tas ir, mēs devāmies uz visu rezultātu, tad atgriezās rādītājs uz 0 Y. Ierakstu un atkal gāja rezultātā.

Šajā rakstā mēs atkārtojām savienojumu ar datu bāzi un aizverot savienojumu. Un arī uzzināja kā nosūtīt pieprasījumus datubāzei, izmantojot PHP. Mācīts, kā saņemt rezultātu. Un kā strādāt ar viņu. Tas viss, kas jums jāzina par veiksmīgu darbs ar MySQL PHP.

Lai iegūtu maksimālo atdevi no MySQL datu bāzes, ir svarīgi saprast, kā izveidot savienojumu no lietotāja programmas uz PHP uz MySQL datu bāzi.

Šajā rokasgrāmatā ir aprakstītas šādas trīs metodes kopā ar atbilstošo programmu PHP, kas izskaidro, kā izveidot savienojumu ar PHP datu bāzē.

  • Savienojums, izmantojot MySQLI paplašinājumu (ieteicams)
  • Savienojums ar ACVN (ieteicams)
  • Savienojums, izmantojot tradicionālās funkcijas novecojis mysql_ (iestatījuma punkts)

Lai to izdarītu, instalējiet PHP-MySQL paketi.

Pamatojoties uz Redhat izplatīšanu, ieskaitot, izmantojiet YUM, lai instalētu PHP-MySQL, kā parādīts zemāk.

Yum instalēt php-mysql

Atkarībā no jūsu sistēmas mēs instalēt vai atjaunināsiet šādas atkarības:

  • pHP-CLI.
  • php-common
  • pHP-ACVN
  • pHP-PGSQL

Pēc tam, kad viss ir instalēts, phpinfo lapa parādīs MySQL moduli, kā parādīts zemāk:

Visiem turpmākajiem piemēriem mēs izveidosim savienojumu ar MySQL datubāzi, kas jau pastāv. Ja esat jauns MySQL, tā ir laba vieta, kur sākt :.

PIEZĪME: Viss, kas šeit aprakstīts, arī strādās ar Mariakti, jo tas darbojas MySQL.

1. Savienojums ar PHP, izmantojot MySQLI paplašinājumu

MySQLI nozīmē, ka MySQL uzlabojās.

Lūdzu, ņemiet vērā, ka lielākā daļa sadalījumu (piemēram: CentOS), PHP-MySQLi jau ir daļa no PHP-MySQL paketes. Tādējādi jums nav jāmeklē un jāinstalē PHP-MySQLI pakete. Viss, kas jums jādara, ir instalēt PHP-MySQL paketi, lai iegūtu darba MySQLI paplašinājumu savā sistēmā.

Izveidojiet šādu MySQLi.php failu Dokumentu tvaiks:

connect_Error) (mirst ("Kļūda: Nevar izveidot savienojumu:". $ Conn-\u003e Connect_Error);) ECHO "Izveidojiet savienojumu ar datu bāzi.
"; $ Rezultāts \u003d $ CRR-\u003e vaicājums (" Izvēlieties vārdu no darbiniekiem "); echo" rindu skaits: $ rezultāts-\u003e Num_rows "; $ Resate-\u003e Aizvērt (); $ CREAR\u003e Aizvērt ();\u003e

Iepriekš minētajā:

  • MySQLI - šī funkcija uzsāks jaunu savienojumu, izmantojot MySQLI paplašinājumu. Šī funkcija prasīs četrus argumentus:
    1. Uzņēmēja nosaukums, kurā darbojas MySQL datu bāzes
    2. MySQL savienojuma lietotājvārds
    3. MySQL lietotāja parole
    4. MySQL datu bāze savienojumam.
  • Vaicājuma funkcija - izmantojiet to, lai norādītu savu MySQL pieprasījumu. Šajā piemērā mēs izvēlamies vārdu sleju no darbinieku datu bāzes.
  • Visbeidzot, mēs parādām izvēlēto rindu skaitu, izmantojot Num_rows mainīgo. Mēs arī aizveram savienojumu, kā parādīts iepriekš.

Izveidojiet savienojumu ar datu bāzi. Stīgu skaits: 4

Piezīme. Ja mēģināt izveidot savienojumu ar attālo MySQL datu bāzi, tad jūs varat to darīt, lai izvairītos no savienojuma ar uzņēmēja kļūdu: kā ļaut MySQL klientam izveidot savienojumu ar MySQL attālo serveri.

2. Savienojums, izmantojot PHP MySQL ar ACVN paplašinājumu

ACVN nozīmē PHP datu objektus.

ACVN_MYSQL īsteno Phr, lai savienotu programmu MySQL datu bāzei.

Lielākajā daļā Linux sadalījumu (piemēram, Centos un Redhat), PHP-ACVN pakete jau ir iekļauta PHP-MySQL paketē. Tādējādi jums nav jāmeklē un jāinstalē PHP-ACVN pakete. Viss, kas jums jādara, ir instalēt PHP-MySQL paketi, lai saņemtu ACVN_MYSQL PHP darbības paplašinājumu jūsu sistēmā.

Izveidojiet šādu MySQL-PDO.PHP failu savā Apache Dokumentu dokumentos:

setTribute (ACVN :: Attr_errmode, ACVN :: Errmode_Exception); ECHO savienojums ar datu bāzi.
"; $ SQL \u003d" Izvēlieties vārdu no darbinieka "; Drukāt" Darbinieku vārds:
"; Foreach ($ Conn\u003e Vaicājums ($ SQL) kā $ Row) (Drukāt $ Row [" Vārds "]."
";) $ CR \u003d null;) Nozvejas (atbalss" Kļūda: Nevar izveidot savienojumu: ". $ Err-\u003e GetMessage ();)?\u003e

Iepriekš minētajā:

  • jaunais ACVN - izveidos jaunu ACVN objektu, kas veiks šādus trīs argumentus:
    1. MySQL savienojuma virkne: būs formātā "MySQL: Host \u003d $ Hostname; DBName \u003d $ dBName". Iepriekš minētajā piemērā datu bāze darbojas vietējā uzņēmējā, un mēs izveidojam savienojumu ar Andreyex datu bāzi.
    2. Lietotājvārds savienošanai ar MySQL.
    3. MySQL lietotāja parole.
  • $ SQL mainīgais - izveidot SQL vaicājumu, ko vēlaties veikt. Šajā piemērā mēs izvēlamies no darbinieka tabulas sleju.
  • vaicājums ($ SQL) - šeit mēs veicam SQL pieprasījumu, ko mēs tikko izveidojām.
  • foreach - šeit mēs palaist caur iepriekš minētajām komandām un saglabājiet tos mainīgā līnijā $, un tad mēs to parādām, izmantojot drukas komandu.
  • MySQL ACVN, lai aizvērtu savienojumu, vienkārši atiestatiet $ savienojuma mainīgā vērtību.

Kad jūs zvanāt MySQLi.php no jūsu pārlūkprogrammas, jūs redzēsiet šādu secinājumu, kas norāda, ka PHP varēja izveidot savienojumu ar MySQL datu bāzi un veikt datu paraugu.

Izveidojiet savienojumu ar datu bāzi. Amatpersonas vārds: Siteslan Maria Oļegs

3. Pievienojiet PHP, izmantojot funkcijas MySQL_ (iestatījuma punktu)

Izmantojiet šo metodi tikai tad, ja izmantojat vecāko PHP versiju un kādu iemeslu dēļ to nevar atjaunināt jaunajā versijā.

Tas ir novecojis PHP 5.5 paplašinājums. Bet sākot ar PHP 7.0 versiju, tas nedarbosies, kā tas ir noņemts.

Sākot ar PHP 5.5 versijām, kad jūs izmantojat šīs funkcijas, tie radīs e_depreced kļūda.

Izveidojiet šādu MySQL-Legacy.php failu ar Apache Dokumentu:

"; $ rezultāts \u003d mysql_query); $ ROW \u003d MYSQL_FETCH_ROW ($ rezultāts); ECHO" Darbinieks 1: ", $ Row,"
n "; mysql_close ($ conn);?\u003e

Iepriekš minētajā:

  • MySQL_Connect funkcija aizņem trīs argumentus: 1) resursdatora nosaukums, kur MySQL datu bāzes darbi, 2) Lietotājvārds savienojuma ar MySQL, 3) paroli MySQL. Šeit jūs izveidojat savienojumu ar MySQL datu bāzi, kas darbojas vietējā serverī, izmantojot sakņu lietotājvārdu un tā paroli.
  • MySQL_SELLECT_DB funkcija - kā norādīts no nosaukuma, izvēlēsies datubāzi, kurai vēlaties izveidot savienojumu. Tas ir līdzvērtīgs komandai "lietošanai". Šajā piemērā mēs izveidojam savienojumu ar Andreyex datu bāzi.
  • Funkcija mysql_query - izmantojiet to, lai norādītu savu MySQL pieprasījumu. Šajā piemērā mēs izvēlamies vārdu sleju no darbinieku datu bāzes.
  • mysql_fetch_row - izmantojiet šo funkciju, lai iegūtu rindas no SQL vaicājuma, ko esam tikko izveidojuši.
  • Visbeidzot, aizveriet savienojumu, izmantojot komandu MySQL_Close, kā parādīts iepriekš.

Zvanot MySQL-Legacy.php no jūsu pārlūkprogrammas, jūs redzēsiet šādu secinājumu, kas norāda, ka PHP ir spējusi izveidot savienojumu ar MySQL datu bāzi un veikt datu paraugu.

Izveidojiet savienojumu ar datu bāzi. Darbinieks 1: Andreyex

Ar PHP ...

Savienojuma izveide dažādos veidos:

1) Old Dedovsky metode savienojumu ar MySQL:

$ Conn \u003d mysql_connect ($ db_hostname, $ db_username, $ db_password) vai mirst ("nav savienojuma ar serveri");
mysql_select_db ($ db_database, $ conn) vai mirst ("nav izdevies izveidot savienojumu ar datu bāzi");

Tālāk redzamības mainīgā skaidrojums.

Tajā pašā laikā tiek izmantotas funkcijas:

  • mysql_connect () - lai izveidotu savienojumu ar serveri;
  • mysql_select_db () - izveidot savienojumu ar datu bāzi;

Tajā pašā laikā mēs pastāvīgi pārbaudām kļūdas klātbūtni šādā veidā: vai mirst ("kļūda ir tā"); - tulko kā vai mirst ar šādu kļūdu - nekavējoties atrast, kur ir kļūda.

config.php.

// mainīgie, lai savienotu datu bāzi
$ Host \u003d "localhost"; / Uzņēmēja
$ lietotājvārds \u003d "sakne"; // parole savienošanai ar datu bāzi
$ parole \u003d ""; // parole, lai nozagtu datu bāzi - vietējā datorā var būt tukša vērtība.
$ Database_name \u003d "My-Dolgi"; // bd nosaukums

// vecs dzīvesveids ar datu bāzi
Mysql_connect ($ host, $ lietotājvārds, $ parole) vai mirst ("Es nevaru izveidot savienojumu ar savienojumu");

// Izvēlieties datubāzi. Ja kļūda ir parādīt
mysql_select_db ($ datu bāzes_name) vai mirst (mysql_error ());

index.php.

nepieciešama_once "config.php";


$ Rezultāts \u003d mysql_query ("izvēlieties vārdu, naudu no dolg pasūtījuma pēc naudas desc robeža 5") vai mirst (mysql_error ());



";


Kamēr ($ Row \u003d mysql_fetch_assoc ($ rezultāts)) (
";
}


mysql_free_result ($ rezultāts);

// Aizveriet savienojumu
mysql_close ();

2) Progresīvāks procesuālais stils - savienojums ar datubāzi ar MySQLI:

Šī metode:

  1. ērti;
  2. ātrāk līdz 40 reizēm;
  3. uzlabota drošība;
  4. ir jaunas funkcijas un funkcijas;

Piemērs savienojums ar datu bāzi PHP ar paraugu no tabulas

config.php.

// socioloģija ar datu bāzi
$ link \u003d mysqli_connect ("localhost", "lietotājvārds", "parole", "Name-datu bāze"); // Šeit es ievadu savus datus tieši: lietotājvārds, parole un datu bāzes nosaukums, pirmais lauks parasti atrodas vietējā vietā

// savienojuma kļūdas izeja
ja (! $ link) (
Echo "Kļūda savieno ar datu bāzi. Kļūdas kods:". mysqli_connect_Error ();
Izeja;
}

Piezīme - visur Izmantojiet MySQLi, nevis MySQL !!!

index.php.

nepieciešama_once "config.php";

// izpildīt pieprasījumu. Ja kļūda tiek parādīta
ja ($ rezultāts \u003d mysqli_query.($ Saite, "Izvēlieties vārdu, naudu no DOLG pasūtījuma pēc Money Desc Limit 5")) (

Atbalss ", kam man ir nolaisties:

";

// vaicājuma rezultātu izvēle
Kamēr ($ Row \u003d mysqli_fetch_assoc($ rezultāts)) (
Echo $ Row ["Vārds"]. "Ar parādu." $ Row ["Money"]. "Rubļi.
";
}

// Atmiņas atbrīvošana
mysqli_free_result($ rezultāts);

// Aizveriet savienojumu
mysqli_close($ Saite.);
}

Kā redzat, daži mirkļi mainījās (sadalīts slīprakstā).

3) Objektu orientēta metode savienošanai ar MySQL datu bāzi - izmantojot metodes un klases:

Mīnusi: grūtāk un mazāk jutīgi pret kļūdām.

Pros: īsums un ērtības programmētājiem ar pieredzi.

$ Conn \u003d jauns mysqli ($ db_hostname, $ db_username, $ db_password, $ db_database);
ja ($ conn-\u003e connect_errno) (
Mirt ($ conn-\u003e connect_error);
) Cits (ECHO "savienojums ar datubāzi ir veiksmīgi izveidots";)

Šeit principā viss ir intuitīvs:

  • $ db_hostname ir saimnieks (pārsvarā localhost),
  • $ db_database - bd nosaukums;
  • $ Db_username un $ dB_Password - lietotājvārds un parole, attiecīgi!

Piemērs savienojums ar datu bāzi PHP stilā OOP ar paraugu no galda

config.php.

// socioloģija ar datu bāzi
$ mysqli \u003d jauns mysqli ("localhost", "lietotājvārds", "parole", "Name-datu bāze"); // Šeit es ievadu savus datus tieši: lietotājvārds, parole un datu bāzes nosaukums, pirmais lauks parasti atrodas vietējā vietā

// savienojuma kļūdas izeja
ja ($ mysqli-\u003e connect_error) (
Die ("Kļūda, kas savieno datu bāzei: (" $ mysqli-\u003e connect_errno ")". Mysqli_connect_error);
}

Piezīme - visur Izmantojiet MySQLi, nevis MySQL !!! Un atšķirībā no iepriekšējās metodes, bultiņas parādās "-\u003e", kas liecina, ka tas ir OOP stils.

index.php.

nepieciešama_once "config.php";

// izpildīt pieprasījumu. Ja kļūda tiek parādīta
ja ($ rezultāts \u003d $ mySQLi-\u003e vaicājums.("Izvēlieties vārdu, naudu no dolg pasūtījuma pēc naudas desc robeža 5")) (

Atbalss ", kam man ir nolaisties:

";

// vaicājuma rezultātu izvēle
Kamēr ($ Row \u003d $ Resate-\u003e fetch_assoc.()) {
Echo $ Row ["Vārds"]. "Ar parādu." $ Row ["Money"]. "Rubļi.
";
}

// Atmiņas atbrīvošana
$rezultāts-\u003e Aizvērt ();

// Aizveriet savienojumu
$mysqli-\u003e close.();
}

Uzdevums jums - atrast atšķirības.

4) Saziņa ar datubāzi ar ACVN:

Kad savienots ar MySQL datu bāzi, tiek izmantotas sagatavotas izteiksmes (pēc sagatavošanas metodes), un, pateicoties lieliskai drošībai un ievērojami palielina ātrumu.

konfigurācijas fails. No iepriekšējās metodes! - tas pats

index.php.

// ACVN stils komunikācijai ar MySQL
Ja ($ STMT \u003d $ MySQLi-\u003e Sagatavot ("Izvēlieties vārdu, Voney no DOLG pasūtījuma pēc naudas< ? LIMIT 5")) {

$ STMT-\u003e Bind_param ("I", summas summas);
$ Summa \u003d 100000;

// palaist izpildi
$ STMT-\u003e izpildīt ();

// Paziņojums par mainīgajiem lielumiem par novāktām vērtībām
$ STMT-\u003e BIND_RESULT ($ COL1, $ COL2);

Atbalss ", kam man ir nolaisties:

";

// vaicājuma rezultātu izvēle
Kamēr ($ STMT-\u003e ielādēšana ()) (
Echo $ col1. "Ar parādu." $ col2. "Rubļi.
";
}

// Atmiņas atbrīvošana
$ STMT-\u003e Aizvērt ();

// Aizveriet savienojumu
$ mysqli - cieši ();

Kā mēs redzam, ir daudz grūtāk un nepieciešams mācīties ACVN ir atsevišķa tēma.