Exemple de aplicații php mysql. Comunicarea cu bazele de date MySQL. Suport pentru baze de date în PHP

Folosind php...

Crearea unei conexiuni la o bază de date în PHP în diferite moduri:

1) modul de modă veche de conectare la MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) sau die ("Fără conexiune la server");
mysql_select_db($db_database,$conn) sau die ("Nu, nu a fost posibilă conectarea la baza de date");

Explicații ale variabilelor de mai jos.

Sunt utilizate următoarele funcții:

  • mysql_connect()- sa se conecteze la server;
  • mysql_select_db()- să se conecteze la baza de date;

În același timp, verificăm în mod constant erorile în acest fel: sau murim („Eroarea este așa și așa”); - tradus ca sau mor cu o astfel de eroare - pentru a afla imediat unde este eroarea.

config.php

// variabile pentru conectarea la baza de date
$host = "localhost"; /gazdă
$nume utilizator = „rădăcină”; // parola pentru conectarea la baza de date
$parolă = ""; // parola pentru conectarea la baza de date - pe computerul local poate fi goala.
$database_name = "my-dolgi"; // numele bazei de date

// mod vechi de conectare la baza de date
mysql_connect($gazdă, $nume utilizator, $parolă) sau die("Nu se poate conecta crearea conexiunii");

// selectează baza de date. Dacă există o eroare, ieșire
mysql_select_db($database_name) sau die(mysql_error());

index.php

require_once "config.php";


$rezultat = mysql_query("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") sau die(mysql_error());



";


while ($rând = mysql_fetch_assoc($rezultat)) (
";
}


mysql_free_result($rezultat);

// Închideți conexiunea
mysql_close();

2) Un stil procedural mai progresiv - conectarea la baza de date folosind mysqli:

Această metodă:

  1. mai convenabil;
  2. de până la 40 de ori mai rapid;
  3. securitate sporită;
  4. există caracteristici și funcții noi;

Un exemplu de conectare la o bază de date în PHP cu o selecție dintr-un tabel

config.php

// conexiuni la baza de date
$link = mysqli_connect("localhost", "nume utilizator", "parolă", "name-database"); // aici introducem datele dvs. direct: nume de utilizator, parola și numele bazei de date, primul câmp este de obicei localhost

// eroare de conectare la ieșire
dacă (!$link) (
echo "Eroare de conectare la baza de date. Cod de eroare: " . mysqli_connect_error();
Ieșire;
}

Vă rugăm să rețineți - mysqli este folosit peste tot, nu mysql!!!

index.php

require_once "config.php";

// Executați cererea. Dacă există o eroare, o afișăm
dacă ($rezultat = mysqli_query($link,„SELECT Name, Money FROM Debt ORDER BY Money DESC LIMIT 5”)) (

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
în timp ce ($rând = mysqli_fetch_assoc($rezultat)) (
echo $row[„Nume”] . „cu datorii”. $row[„Bani”] . "ruble.
";
}

// eliberând memoria folosită
mysqli_free_result($rezultat);

// Închideți conexiunea
mysqli_close($link);
}

După cum puteți vedea, unele puncte s-au schimbat (în cursive).

3) Metodă orientată pe obiecte de conectare la o bază de date MySQL - folosind metode și clase:

Contra: Mai complex și mai puțin susceptibil la erori.

Pro: concizie și comoditate pentru programatori experimentați.

$conn = new mysqli($db_hostname, $db_username, $db_parola, $db_database);
if($conn->connect_errno)(
die($conn->connect_error);
) else (echo „Conexiunea la baza de date a fost stabilită cu succes”;)

aici, în principiu, totul este intuitiv:

  • $db_hostname este gazdă(mai ales localhost),
  • $db_database - nume db;
  • $db_username și $db_password - numele de utilizator și respectiv parola!

Un exemplu de conectare la o bază de date în stil php OOP cu eșantionare dintr-un tabel

config.php

// conexiuni la baza de date
$mysqli = mysqli nou("localhost", "nume utilizator", "parolă", "nume-bază de date"); // aici introducem datele dvs. direct: nume de utilizator, parola și numele bazei de date, primul câmp este de obicei localhost

// eroare de conectare la ieșire
if ($mysqli->connect_error) (
die ("Eroare de conectare DB: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
}

Vă rugăm să rețineți - mysqli este folosit peste tot, nu mysql!!! și spre deosebire de metoda anterioară, apar săgeți „->”, care indică faptul că acesta este un stil OOP.

index.php

require_once "config.php";

// Executați cererea. Dacă există o eroare, o afișăm
dacă ($rezultat = $ mysqli->interogare("SELECT Name, Money FROM Debt ORDER BY Money DESC LIMIT 5")) (

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
în timp ce ($rând = $rezultat-> fetch_assoc()) {
echo $row[„Nume”] . „cu datorii”. $row[„Bani”] . "ruble.
";
}

// eliberând memoria folosită
$rezultat->close();

// Închideți conexiunea
$mysqli->close();
}

Sarcina ta este să găsești diferențele.

4) Comunicarea cu baza de date folosind PDO:

La conectarea la o bază de date MySQL, se folosesc expresii pregătite (folosind metoda prepare) și, ca urmare, o securitate mai mare și crește foarte mult performanța.

fișier de configurare din metoda anterioară! - aceeași

index.php

// Stil PDO pentru comunicarea cu MySQL
if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money< ? LIMIT 5")) {

$stmt->bind_param("i", $summa);
$summa = 100000;

//începe execuția
$stmt->execute();

// Declararea variabilelor pentru valorile pregătite
$stmt->bind_result($col1, $col2);

Echo „Cui îi datorez în ordine descrescătoare:

";

// Preluarea rezultatelor interogării
while ($stmt->fetch()) (
echo $col1 . „cu datorii”. $col2 . "ruble.
";
}

// eliberând memoria folosită
$stmt->close();

// Închideți conexiunea
$mysqli->close();

După cum puteți vedea, aici este mult mai complicat și trebuie să studiați DOP - acesta este un subiect separat.

Tot ce pot spune ca recomandare pentru utilizarea bazelor de date este că viața fără ele este pur și simplu moarte!

Baza de date este o rază de lumină exe în regatul întunecat al procesării datelor de către un program interpretat. Baza de date aduce puțină bătaie de cap, dar ameliorează mult mai mult.

Prima conversație va fi despre funcțiile PHP folosite pentru a lucra cu MySQL. Deci să începem.

1. Administrarea bazei de date

Metode de administrare a unei baze de date în ordinea descrescătoare a confortului:

  • phpMyAdmin (recomand cu incredere!)
  • Scrieți un script care ar distorsiona baza de date (vezi exemplul)
  • mysql.exe în pachetul mysql
  • mysql_manager.exe (pare să fie cumva posibil acolo, doar în pragul șamanismului)

Recomand in special prima metoda. Cu el nu trebuie să studiați interogările ALTER TABLE, ADD COLUMN etc. inca nu-i cunosc. Mai mult decât atât, „astfel de întrebări, tovarășe ambasador, nu pot fi rezolvate imediat” - când trebuie să schimbați automat structura unei baze de date sau a unui tabel? Câteva cuvinte despre a doua metodă. Aceasta este o tehnologie de soluție, ca să zic așa, pe care am folosit-o fără să știu despre phpMyAdmin și utilitarul mysqldump. Scriptul conține comenzi care șterg baza de date și o creează din nou.

A ajutat cândva, dar, în general, o voi spune din nou, aceasta este o tehnologie de ocolire, un „suport”.

Pentru viitor: dacă aveți mai multe site-uri care folosesc o bază de date, atunci cel puțin creați mai multe baze de date în serverul dvs. de acasă. Acest lucru va ușura munca serverului și va elimina posibilitatea de confuzie la masă. În general, regulile de lucru cu o bază de date sunt aceleași ca și cu un site web - păstrați-l într-un director separat de alții.

2. Conexiune la serverul bazei de date<хост>, <логин>, <пароль>Acest lucru se face folosind funcția mysql_connect: $connect = mysql_connect(

); Implicit, pe serverul mysql din tabelul de utilizatori există un utilizator root care poate avea acces doar de la localhost, adică de pe același computer unde este instalat serverul mysql. ATENŢIE! „Aveți acces de la localhost” înseamnă că scriptul dumneavoastră PHP are acces și îl puteți accesa de pe orice alt computer.

De ce este folosită variabila? Acest lucru se întâmplă în cazul în care trebuie să utilizați mai multe servere de baze de date pentru lucru (sau, de exemplu, pentru a asigura o securitate mai mare, utilizați autentificări diferite, care pot avea privilegii diferite). În astfel de cazuri, fiecare solicitare necesită certitudine cu privire la canalul, ca să spunem așa, prin care trece comanda.

Dar dacă utilizați o singură conexiune, nu trebuie să o specificați în parametrii funcției de solicitare (mai multe despre ei mai jos) - php găsește prima (și în acest caz singura) conexiune stabilită și o folosește.

Mecanismul de funcționare al funcțiilor de interogare a bazei de date este același cu cel al funcției de conectare: parametrii solicitării și (dacă este necesar) conexiunii sunt trecuți funcției, iar rezultatul este scris într-o variabilă:

$rezultat = mysql_db_query(bază de date șir, interogare șir [, variabilă de conexiune]);

$rezultat = mysql_query(interogare șir [, variabilă de conexiune]);

ATENŢIE! Pentru a utiliza funcția mysql_query, în care baza de date nu este specificată, trebuie mai întâi să selectați baza de date de utilizat:

mysql_select_db(bază de date șir);

Acum avem o variabilă $result. Acesta este un indicator către rezultatul interogării. Există un număr de rânduri de tabel acolo. Puteți obține aceste rânduri folosind funcțiile mysql_fetch_row și mysql_fetch_array:

Ecou" ", $row["câmp2"], "
"; while ($row = mysql_fetch_array($result)) echo"", $row["câmp1"], "
";

"; ecou"

Funcția mysql_fetch_array scoate un tablou în variabila specificată (în acest caz $row), ai cărui indecși sunt numele câmpurilor (și dacă scrieți table.field în lista câmpurilor de interogare, atunci indexul matricei va fi câmp ). mysql_fetch_row produce o matrice ai cărei indici sunt numere care încep de la 0.

Ce funcție este mai bine de utilizat? Dacă cereți un asterisc, de ex. toate câmpurile tabelului, iar câmpurile trebuie să fie afișate într-o anumită secvență (când, de exemplu, este desenat un antet de tabel), este mai bine să utilizați mysql_fetch_array. Dacă solicitați unul, două sau trei câmpuri, cunoscând clar secvența lor, puteți face mysql_fetch_row - acest lucru va reduce cantitatea de cod de program.

Acestea sunt comenzi DELETE și UPDATE. Astfel de interogări au aceleași „drepturi” ca SELECT, deci comanda este trimisă la server în același mod - mysql_query (mysql_db_query). Dar în acest caz, funcția nu returnează un rezultat:

În consecință, dacă executăm o interogare select și nu scriem rezultatul într-o variabilă, datele nu vor fi stocate nicăieri.

5. Gestionarea erorilor de solicitare

Cel mai recent mesaj de eroare poate fi obținut prin funcția mysql_error:

echo "Eroare baza de date. MySQL scrie:", mysql_error();

Dacă rezultatul unei funcții este scris într-o variabilă, îl puteți verifica:

$rezultat = mysql_query($request); if (!$rezultat) echo "Eroare baza de date. MySQL scrie:", mysql_error(); else(ecou"

"; while ($row = mysql_fetch_array($result)) echo" "; ecou"
"; while ($row = mysql_fetch_array($result)) echo"", $row["câmp1"], "
"; };

Dacă nu scriem într-o variabilă, așa să fie.

Mi-am numit baza de date „phptest”. După ce faceți clic pe butonul „Creați”, ar trebui să fiți transferat automat în baza de date pe care ați creat-o.

Creați un tabel în baza de date

Nici în această procedură nu este nimic complicat. Să creăm un tabel în care vom stoca titlul articolelor noastre și textul în sine:

După cum poate ați observat, am pus numărul 3 în numărul de câmpuri, de ce? La urma urmei, trebuie să creăm două câmpuri, pentru titlu și text. Ideea este că un tabel din baza de date trebuie să aibă un câmp suplimentar. Pentru ce? Acest câmp este un număr de identificare secvențial (adică ne numărăm rândurile din tabel), așa că obținem fiecărui rând al tabelului propriul său număr unic. Acest lucru va fi util pentru a găsi șirul de care avem nevoie în baza de date. Acest câmp se numește de obicei id și este setat la el AUTO_INCREMENT(Vă arăt mai jos unde este expus). AUTO_INCREMENT vă permite să atribui fiecărei linii propriul său număr unic, astfel nu veți găsi o înregistrare cu același număr în tabelul bazei de date!

După ce ați completat numele și numărul de câmpuri, faceți clic pe „OK” și veți fi dus la pagina de creare a câmpurilor. Vă mărturisesc că nu înțeleg cu adevărat ce fac când creez câmpuri, dar asta nu mă împiedică să lucrez cu ele. Să le completăm astfel:

Și completați cele două câmpuri de care avem nevoie:

De ce doar doi? Deoarece primul câmp ID va fi completat automat din cauza AUTO_INCREMENT. Faceți clic pe „OK”. Acum, în fila „Prezentare generală”, puteți vedea linia pe care am creat-o în tabel:

Ei bine, am învățat cum să creăm tabele și rânduri prin panoul phpmyadmin, acesta este deja un progres. Apropo, aș dori să remarc că interfața acestui panou este intuitivă, puteți apăsa cu ușurință butoanele acolo și vă dați seama ce este. ce

Este timpul să învățați cum să creați, să ștergeți și să actualizați rânduri în tabelele create folosind PHP. Pentru a putea percepe mai bine ce vă spun, vom scrie un mic panou de administrare pentru site, iar pe măsură ce trec lucrurile vă voi spune ce și cum.

Ieșirea înregistrărilor din baza de date

Să începem cu asta, deoarece atunci când creați orice proiect trebuie să vedeți clar procesul, iar fără ieșire este foarte greu de făcut (voi lucra cu fișierul test.php, nu fi surprins când vezi link-uri în cod către acest fișier). Cum ne vom retrage? Ei bine, mai întâi trebuie să ne conectăm la baza de date, după ce folosim bucla do while (Learning PHP - Loops) vom prelua înregistrările din baza de date. Să începem

  • Conectarea la baza de date

Cum se face legătura? Atentie la sintaxa:

mysql_select_db(Numele bazei de date, mysql_connect(Server,Nume utilizator DB,Parola utilizator DB));

Numele bazei de date, utilizatorul serverului și parola sunt create de dvs. sau furnizate de găzduitor. Folosind un server local ca exemplu, creați singur anumite date sau le folosiți pe cele deja create. Iată cum vor arăta conexiunile la baza de date pe care am creat-o:






//CONECTAȚI LA BAZĂ DE DATE (DB)

Serverul, utilizatorul și parola au fost create implicit (în acest caz putem spune că aproape toate datele ne sunt furnizate de către hoster). Din datele mele, am indicat doar numele bazei de date. Apropo, acesta este cod PHP și, prin urmare, trebuie să fie între paranteze speciale ()

  • Ieșire de date

Trebuie să afișăm datele din tabelul de pagini. Atenție la sintaxa de ieșire:

$result = mysql_query("SELECT Ceea ce scoatem din numele tabelului din baza de date");

Prima linie ne permite să specificăm ce coloane trebuie să extragem și din ce bază de date.

A doua linie pune tot ce s-a găsit într-o variabilă...

ATENŢIE Sunt câteva puncte pe care aș dori să le clarific. Să rezolvăm câteva probleme:

  • Trebuie să extragem toate câmpurile din tabel.

Cum se extrag toate câmpurile din tabelul paginii? ca aceasta:

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

Poate ați observat că am pus un asterisc (*) după SELECT. Asteriscul înseamnă că trebuie să extrag toate câmpurile din tabel

  • Trebuie să extragem un singur câmp din tabel

Cum se extrage doar câmpul text dintr-un tabel? ca aceasta:

$rezultat = mysql_query("SELECTAȚI textul din pagină");
$myrow = mysql_fetch_array($rezultat);

Pentru a extrage nu toate câmpurile, ci doar unele, trebuie să enumerați câmpurile obligatorii după SELECT, separate prin virgulă.

  • Trebuie să extragem câmpuri nu din întregul tabel, ci doar dintr-o singură linie

Cum se extrag toate câmpurile din prima linie? Știm că prima linie are un id egal cu unu, să folosim aceste cunoștințe:

După SELECT, am explicat, separate prin virgule, ce câmpuri trebuiau extrase, apoi am adăugat o nouă linie WHERE (care înseamnă „unde”) id-ul este egal cu 1. Astfel, extrag câmpurile de care am nevoie din linia unde id. este egal cu unu

Ei bine, să începem să creăm rezultatul articolelor noastre? Vom afișa doar anteturile, să începem:


$myrow = mysql_fetch_array($rezultat);

do
{
ecou "".$myrow."
";
}

Ce am făcut? Am extras două câmpuri din tabel, id și titlu. Apoi, am lansat bucla do while (Learning PHP - Cycles) și am generat link-uri folosind datele care au fost extrase din baza de date. Datele sunt stocate în variabila $myrow, această variabilă este o matrice, cheile matricei sunt numele câmpurilor noastre din baza de date. Iată ce s-a întâmplat:

Anteturile sunt afișate, acum haideți să organizăm ieșirea mesajelor complete atunci când mouse-ul face clic pe un link cu un titlu. Pentru a face acest lucru într-un singur fișier, adăugați condiții if()():

//CONECTAȚI LA BAZĂ DE DATE (DB)
$nameDB = "phptest";//Numele bazei de date
$nameSERVER = "localhost";//Server
$nameUSER = "rădăcină";//Nume utilizator al bazei de date
$passUSER = "";//parola utilizator DB
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//CONECTAȚI LA BAZĂ DE DATE (DB)

//ANTETURI DE IEȘIRE
if(!isset($_GET["id"]))
{
$rezultat = mysql_query("SELECT ID,titlu FROM pagina");
$myrow = mysql_fetch_array($rezultat);

do
{
ecou "".$myrow."
";
}
while ($myrow = mysql_fetch_array($rezultat));
}
//ANTETURI DE IEȘIRE

//IESIRE TEXTUL COMPLET
if(isset($_GET[„id”]))
{

$myrow = mysql_fetch_array($rezultat);

echo $myrow;
}
//IESIRE TEXTUL COMPLET
?>

Am adaugat doua conditii. Vom vedea o listă cu titluri numai dacă variabila globală $_GET["id"] nu există. Vom vedea textul integral doar dacă această variabilă există. În acest caz, vom afișa doar o înregistrare de care avem nevoie din baza de date. Iată ce avem:

Acum cred că este timpul să învățăm cum să adăugați noi rânduri la tabel.

Adăugarea datelor la baza de date

Să începem să adăugăm prin crearea unui formular, iată o bucată de cod care trebuie adăugată la sfârșitul fișierului nostru:

//FORMUL DE ADĂUGARE A ÎNTRERILOR
if(isset($_GET[„adăugați”]))
{
ecou"







";
}
//FORMUL DE ADĂUGARE A ÎNTRERILOR

Acest formular va apărea numai dacă variabila globală $_GET["add"] există, așa că undeva în partea de jos trebuie să inserați un link pentru a adăuga un articol nou. Cel mai bun mod de a face acest lucru este în codul de ieșire al antetului, de asemenea, puteți edita condiția pentru afișarea antetelor noastre astfel:

//ANTETURI DE IEȘIRE
if(!isset($_GET[„id”]) ȘI !isset($_GET[„adăugați”]))
{
$rezultat = mysql_query("SELECT ID,titlu FROM pagina");
$myrow = mysql_fetch_array($rezultat);

do
{
ecou "".$myrow."
";
}
while ($myrow = mysql_fetch_array($rezultat));

ecou"


Adaugă postare";
}
//ANTETURI DE IEȘIRE

Am editat condiția astfel încât lista de anteturi să nu apară atunci când este afișat formularul, așa s-a întâmplat:

$rezultat = mysql_query("INSERT INTO nume tabel în baza de date (câmpul 1 al bazei de date, câmpul 2 al bazei de date) VALUES ("data 1","data 2")");

Acum haideți să scriem un handler pentru mini panoul nostru de administrare și veți înțelege totul. Iată o bucată de cod pe care am postat-o ​​imediat după ce m-am conectat la baza de date:

//Adăugarea de intrări

{

header("locație: test.php");
Ieșire;
}
//Adăugarea de intrări

Condiția este variabila globală $_POST, adică dacă am completat formularul și am dat clic pe butonul „Add post”, condiția noastră va funcționa. Câmpul de titlu va conține date din variabila globală $_POST, iar câmpul de text va conține $_POST. În continuare, antetul de linie ("location: test.php") va funcționa. Vă permite să redirecționați utilizatorul către o altă pagină, în acest caz această pagină va fi test.php. Și ieșirea de linie; întrerupe execuția altor scripturi. Iată ce s-a întâmplat:

Editarea datelor din baza de date

Pentru a edita o anumită înregistrare în baza noastră de date, în mod firesc trebuie să stabilim ce înregistrare trebuie editată... Propun să afișăm butonul de editare în codul pentru ieșirea textului complet, hai să o edităm:

//IESIRE TEXTUL COMPLET
if(isset($_GET[„id”]))
{
$rezultat = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($rezultat);

echo $myrow;
ecou"


Editează postarea";
}
//IESIRE TEXTUL COMPLET


if(isset($_GET["edd"]))
{

$myrow = mysql_fetch_array($rezultat);

Acum avem o variabilă $result. Acesta este un indicator către rezultatul interogării. Există un număr de rânduri de tabel acolo. Puteți obține aceste rânduri folosind funcțiile mysql_fetch_row și mysql_fetch_array:








";
}
//FORMULARE DE EDITARE A INTRARILOR

Am adăugat această bucată de cod după formularul de adăugare a înregistrărilor. Acest formular este aproape similar cu formularul de adăugare a postărilor. După cum probabil ați observat, am refăcut atributele nume și am adăugat atributul valoare. În acest atribut am plasat datele pe care le-am preluat din baza de date. Există și un câmp invizibil aici. Este necesar să se trimită identificatorul de înregistrare către gestionarea fișierelor.

Acum, pentru a ne asigura că atunci când acest formular este afișat pe ecran, nu există o listă de titluri, să corectăm condiția:

//ANTETURI DE IEȘIRE

{
$rezultat = mysql_query("SELECT ID,titlu FROM pagina");
$myrow = mysql_fetch_array($rezultat);

do
{
ecou "".$myrow."
";
}
while ($myrow = mysql_fetch_array($rezultat));

ecou"


Adaugă postare";
}
//ANTETURI DE IEȘIRE

Este timpul să aflați cum sunt editate înregistrările din baza de date. Iată sintaxa:

Acum să scriem un handler. Iată o bucată de cod pe care am adăugat-o imediat după handler pentru adăugarea înregistrărilor:

//EDITARE INTRARI

{

header("locație: test.php");
Ieșire;
}
//EDITARE INTRARI

Condiția arată că handlerul va rula doar dacă facem clic pe butonul „editează postarea”. Urmează actualizarea bazei de date. În câmpul titlu vom plasa valoarea variabilei globale $_POST și în câmpul text - $_POST. Vom edita linia al cărei id este egal cu variabila globală $_POST. Apoi redirecționăm utilizatorul înapoi la lista de anteturi:

Eliminarea înregistrărilor din baza de date

Ei bine, ultimul lucru care ne rămâne de studiat este ștergerea.. Este mai simplu decât toate celelalte, așa că fiți atenți la sintaxă:

Pentru a șterge unele postări, trebuie să puneți undeva un link cu care utilizatorul să poată șterge o postare... să plasăm acest link în rezultatul textului integral al postării:

//IESIRE TEXTUL COMPLET
if(isset($_GET[„id”]))
{
$rezultat = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($rezultat);

echo $myrow;
ecou"


Editează postarea";
ecou"
Șterge postarea";
}
//IESIRE TEXTUL COMPLET

Rezultatul muncii

Iată codul complet pentru postarea de astăzi:

//CONECTAȚI LA BAZĂ DE DATE (DB)
$nameDB = "phptest";//Numele bazei de date
$nameSERVER = "localhost";//Server
$nameUSER = "rădăcină";//Nume utilizator al bazei de date
$passUSER = "";//parola utilizator DB
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//CONECTAȚI LA BAZĂ DE DATE (DB)

//Adăugarea de intrări
if(isset($_POST["title_post"]) ȘI isset($_POST["text_post"]))
{
$rezultat = mysql_query("INSERT INTO page (title,text) VALUES ("$_POST","$_POST")");
header("locație: test.php");
Ieșire;
}
//Adăugarea de intrări

//EDITARE INTRARI
if(isset($_POST["title_post_edd"]) ȘI isset($_POST["text_post_edd"]))
{
$rezultat = mysql_query("UPDATE page SET title="$_POST)", text="$_POST" WHERE id="$_POST"");!}
header("locație: test.php");
Ieșire;
}
//EDITARE INTRARI

//ȘTERGERE ÎNREGISTRĂRI
if(isset($_GET["del"]))
{
$rezultat = mysql_query("ȘTERGERE DIN pagina WHERE id="$_GET"");
header("locație: test.php");
Ieșire;
}
//ȘTERGERE ÎNREGISTRĂRI

//ANTETURI DE IEȘIRE
if(!isset($_GET[„id”]) ȘI !isset($_GET[„adăugați”]) ȘI !isset($_GET[„edd”]))
{
$rezultat = mysql_query("SELECT ID,titlu FROM pagina");
$myrow = mysql_fetch_array($rezultat);

do
{
ecou "".$myrow."
";
}
while ($myrow = mysql_fetch_array($rezultat));

ecou"


Adaugă postare";
}
//ANTETURI DE IEȘIRE

//IESIRE TEXTUL COMPLET
if(isset($_GET[„id”]))
{
$rezultat = mysql_query("SELECT text FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($rezultat);

echo $myrow;
ecou"


Editează postarea";
ecou"
Șterge postarea";
}
//IESIRE TEXTUL COMPLET

//FORMUL DE ADĂUGARE A ÎNTRERILOR
if(isset($_GET[„adăugați”]))
{
ecou"







";
}
//FORMUL DE ADĂUGARE A ÎNTRERILOR

//FORMULARE DE EDITARE A INTRARILOR
if(isset($_GET["edd"]))
{
$rezultat = mysql_query("SELECT * FROM page WHERE id="$_GET"");
$myrow = mysql_fetch_array($rezultat);

Acum avem o variabilă $result. Acesta este un indicator către rezultatul interogării. Există un număr de rânduri de tabel acolo. Puteți obține aceste rânduri folosind funcțiile mysql_fetch_row și mysql_fetch_array:








";
}
//FORMULARE DE EDITARE A INTRARILOR
?>

Concluzie

Materialul s-a dovedit a fi destul de complex. Dar! Poate ați observat că am folosit doar informațiile pe care le-am dat mai devreme. Aceasta înseamnă că, cu aceste cunoștințe, puteți crea proiecte simple în PHP! Dacă ai stăpânit toate acestea, atunci poți spune cu mândrie că ești un programator începător! Ei bine, acum puteți începe să vă creați primele cms. Dacă aveți întrebări, și cel mai probabil că aveți, întrebați, vă voi ajuta în orice fel pot! Mult succes, asta e tot pentru ziua de azi!

P.S.: Ce este un fișier mdf? Cum se deschide? Cum se deschide? Acestea și multe întrebări pot fi răspunse la voprosi4ek.ru

MySQL este un tip de bază de date relațională. MySQL este un server la care diverși utilizatori se pot conecta.

Când vă conectați la Internet, introduceți numele de utilizator și parola, precum și numele serverului la care vă conectați? Când lucrați cu MySQL, se folosește același sistem.

Încă un lucru: ce este o bază de date relațională? Mijloace relaționale bazate pe tabele. Faimosul editor de foi de calcul Microsoft, Excel, este de fapt un editor de baze de date relaționale.

Conectarea la serverul MySQL

Pentru a vă conecta la un server MySQL în PHP, utilizați funcția mysqli_connect(). Această funcție are trei argumente: numele serverului, numele de utilizator și parola.

Funcția mysqli_connect() returnează identificatorul de conexiune, acesta este stocat într-o variabilă și ulterior folosit pentru a lucra cu baze de date.

Cod de conectare la server MySQL:

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

În acest caz, lucrez la o mașină locală pe Denwere, deci numele de gazdă este localhost, numele de utilizator este root și nu există nicio parolă.

De asemenea, conexiunea trebuie să fie închisă după terminarea lucrului cu MySQL. Funcția mysqli_close() este folosită pentru a închide conexiunea. Să extindem exemplul:

$link = mysqli_connect("localhost", "root", ""); if (!$link) die("Eroare"); mysqli_close($link);

Aici am verificat identificatorul de conexiune pentru adevăr, dacă este ceva în neregulă cu conexiunea noastră, atunci programul nu va fi executat, funcția die() își va opri execuția și va afișa un mesaj de eroare în browser.

Erori de conectare

Următoarele funcții sunt utilizate pentru a verifica conexiunea:

  • mysqli_connect_errno() - returnează codul de eroare al ultimei încercări de conectare. Dacă nu există erori, returnează zero.
  • mysqli_connect_error() - returnează o descriere a ultimei erori de conectare la serverul MySQL.
define("HOST", "localhost"); define("DB_USER", "rădăcină"); define("DB_PASSWORD", ""); define("DB", "tester"); $link = mysqli_connect(HOST, DB_USER, DB_PASSWORD, DB); /* verificați conexiunea */ if (mysqli_connect_errno()) ( printf("Nu se poate conecta: %s\n", mysqli_connect_error()); ieșire(); ) else ( printf("Conexiunea reușită: %s\n" , mysqli_get_host_info($link));

Funcția mysqli_get_host_info() returnează un șir care conține tipul de conexiune utilizat.

De asemenea, rețineți că, folosind comanda define, am salvat toți parametrii de conexiune ca constante. Când scrieți proiecte mari și există multe fișiere care se conectează la serverul MySQL, este convenabil să stocați parametrii de conexiune într-un fișier separat și să îl introduceți folosind funcția include sau require.

Selectarea unei baze de date

Un server MySQL poate avea mai multe baze de date. În primul rând, trebuie să selectăm baza cu care trebuie să lucrăm. În PHP, există un alt parametru pentru aceasta în funcția mysqli_connect() - numele bazei de date.

L-am creat pe computerul meu prin phpMyAdmin cu testerul de nume. Să ne conectăm la el:

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

Deci, am ales o bază de date cu care să lucrăm. Dar după cum știm, o bază de date relațională constă din tabele, iar baza noastră de date nu are încă tabele. Baza de date este creată goală, fără tabele. Tabelele trebuie adăugate separat. Acum să adăugăm un tabel folosind PHP.

Creați un tabel

În numele bazelor de date MySQL, partea SQL înseamnă Structured Query Language, care se traduce ca un limbaj de interogare structurat. Vom scrie interogări în SQL și le vom trimite către serverul MySQL din programul PHP.

Pentru a crea un tabel trebuie doar să lansăm comanda CREATE TABLE. Să creăm un tabel numit utilizatori ale căror coloane vor stoca login-urile (coloana de autentificare) și parolele (coloana parole) ale utilizatorilor.

$query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))";

În acest cod, am atribuit variabilei $query un șir de text care reprezintă o interogare SQL. Creăm un tabel numit utilizatori care conține două coloane autentificare și parolă, ambele de tip de date VARCHAR(20). Despre tipurile de date vom vorbi mai târziu, deocamdată voi reține doar că VARCHAR(20) este un șir cu o lungime maximă de 20 de caractere.

Pentru a trimite interogarea noastră către serverul MySQL folosim funcția PHP mysqli_query(). Această funcție returnează un număr pozitiv dacă operația a avut succes și fals dacă a apărut o eroare (sintaxa cererii este incorectă sau programul nu are permisiunea de a executa cererea).

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Eroare"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; mysqli_query($interogare); mysqli_close($link);

Interogarea SQL nu trebuie să fie scrisă într-o variabilă, aceasta poate fi scrisă direct ca argument pentru funcția mysql_query(). Doar face codul mai lizibil.

Acest script are un dezavantaj - nu trimite nimic în browser. Să adăugăm un mesaj:

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Eroare"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Tabelul a fost creat."; else echo "Tabelul nu a fost creat."; mysqli_close($link);

Dacă rulăm din nou acest script, vom vedea un mesaj în browser: „Tabelul nu a fost creat”. Cert este că tabelul a fost creat prima dată când a fost lansat, dar este imposibil să creați din nou un tabel cu același nume. Ne confruntăm cu o situație de eroare, așa că este timpul să vorbim despre gestionarea erorilor atunci când lucrăm cu MySQL.

Gestionarea erorilor

Când depanăm un program, este posibil să avem nevoie de informații precise despre eroare. Când apare o eroare în MySQL, serverul bazei de date setează numărul erorii și o linie cu descrierea acesteia. PHP are funcții speciale pentru a accesa aceste date.

  • mysqli_errno() - returnează numărul erorii.
  • mysqli_error() - returnează un șir care descrie eroarea.

Acum să adăugăm funcția mysql_error() la scriptul nostru:

$link = mysql_connect("localhost", "root", "", "tester"); if (!$link) die("Eroare"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Tabelul a fost creat."; else echo "Tabelul nu a fost creat: ".mysqli_error(); mysqli_close($link);

Acum scriptul nostru va returna linia în browser: „Tabelul nu a fost creat: Tabelul „utilizatori” există deja”.

Ștergerea unui tabel

Deci, acum avem o masă de care nu avem nevoie. Este timpul să învățați cum să aruncați tabele dintr-o bază de date.

Pentru a arunca un tabel, utilizați comanda DROP TABLE urmată de numele tabelului.

$link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Eroare"); $query = "DROP TABLE utilizatori"; if (!mysqli_query($query)) echo „Eroare la ștergerea tabelului: „.mysqli_error(); else echo „Tabel șters.”; mysqli_close($link);

Rezultate

Deci, am stăpânit elementele de bază ale MySQL. Ce am invatat sa facem:

  • Conectați-vă la o bază de date MySQL utilizând funcția mysqli_connect().
  • Închideți conexiunea la serverul MySQL folosind funcția mysqli_close().
  • Trimiteți interogări SQL către serverul MySQL folosind funcția mysqli_query().
  • Am învățat interogarea SQL pentru crearea unui tabel: create table.
  • Am învățat interogarea SQL pentru ștergerea unui tabel: drop table.
  • Am învățat cum să gestionăm erorile folosind funcțiile mysqli_errno() și mysqli_error().

Apoi vom arunca o privire mai atentă asupra tipurilor de date MySQL.

Citiți următoarea lecție:

În acest articol, vom folosi exemple pentru a analiza puncte atât de importante în lucrul cu bazele de date MySQL (DB), cum ar fi preluarea dintr-o bază de date, scrierea într-o bază de date, actualizarea informațiilor într-o bază de date și, de asemenea, ștergerea acestora dintr-o bază de date. Toate acestea se vor face folosind patru operatori: SELECT, INSERT, UPDATE și DELETE, despre care vor fi discutate în acest articol.

Deci, dacă trebuie să extragem toate câmpurile din baza de date, folosim următorul cod.

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

Asteriscul înseamnă că trebuie să extrageți toate câmpurile din tabel.

Dacă trebuie să extrageți doar câteva câmpuri, de exemplu, numele și numele.

$rezultat = mysql_query("SELECT numele, prenumele FROM primul_tabel",$db);

nume, prenume – câmpuri cu numele și prenumele utilizatorilor.

Dacă trebuie să obțineți date exacte, de exemplu, numele de familie al tuturor utilizatorilor din baza de date cu un anumit nume (numele va fi introdus în variabila $name).

nume=’$nume’ – câmpul de nume este egal cu variabila $nume.

Pe lângă o condiție, putem enumera și mai multe, de exemplu, trebuie să obținem identificatorul tuturor utilizatorilor cu un anumit nume și prenume (numele și prenumele vor fi introduse în variabilele $name și, respectiv, $last_name ). Pentru aceasta putem folosi următorul cod.

Dacă trebuie să obținem înregistrări în care este îndeplinită una dintre mai multe condiții, de exemplu, obținem identificatorii tuturor utilizatorilor al căror nume sau prenume le îndeplinește pe cele specificate în condiții.

Dacă trebuie să sortați rezultatul după unii parametri, de exemplu, după nume.

$rezultat = mysql_query("SELECT * FROM primul_tabel ORDER BY nume ",$db);

ORDER BY nume – sortați după nume.

Dacă trebuie să sortați în ordine inversă.

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

DESC - în ordine inversă.

Dacă trebuie să extrageți doar un anumit număr de câmpuri din baza de date. De exemplu, trebuie să scoateți primele cinci câmpuri.

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

LIMITĂ 5 – scoateți numai primele cinci rezultate din baza de date.

Acestea au fost exemple mici de mostre din baza de date. Acum să ne uităm la cum să convertiți rezultatul rezultat într-o matrice pentru utilizare ulterioară, de exemplu, pentru a afișa rezultatul pe ecran. Există un instrument special pentru aceasta în PHP mysql_fetch_array().

Putem plasa rezultatul funcției într-o variabilă, de exemplu, variabila $myrow, care va stoca . Ca parametru de funcție mysql_fetch_array() va fi transmis rezultatul executării funcţiei mysql_query(). Toate acestea vor arăta așa.

$myrow = mysql_fetch_array($rezultat);

Acum putem accesa elementele tabloului asociativ $myrow. De exemplu, să ne uităm la codul care afișează numele de utilizator cu id =1. Ca bază de date va fi folosită baza de date db_first din articolul precedent.

/*Conectează-te la baza de date*/ $db = mysql_connect("MySQL Server","DB user","Parola pentru accesarea bazei de date"); mysql_select_db("nume_db", $db); /*Efectuează o interogare la baza de date*/ $result = mysql_query("SELECT name FROM first_table WHERE id="$id"",$db); /*Conversie rezultatul într-o matrice*/ $myrow = mysql_fetch_array($result); /*Afișează rezultatul pe ecran*/ echo $myrow["nume"];

După cum puteți vedea, totul este foarte simplu și clar.

Ei bine, acum să trecem la următoarea instrucțiune INSERT, care este responsabilă pentru adăugarea de informații în baza de date.

Adăugarea de informații la baza de date. instrucțiunea INSERT

Instrucțiunea INSERT este utilizată pentru a adăuga informații la o bază de date. Codul responsabil pentru adăugare are următoarea sintaxă.

$rezultat = mysql_query("INSERT INTO table (câmp 1, câmp 2, câmp N) VALUES ("valoarea 1", "valoarea 2", "valoarea N")");

De exemplu, trebuie să adăugăm numele și prenumele unui utilizator nou la first_table. Puteți utiliza următorul cod pentru aceasta.

$rezultat = mysql_query("INSERT INTO first_table (nume, prenume) VALUES ("$nume", "$nume")");

Unde, $name și $last_name sunt variabile cu numele și prenumele noului utilizator.

Pentru a verifica rezultatul, puteți folosi .

$rezultat = mysql_query("INSERT INTO first_table (nume, prenume) VALUES ("$nume", "$nume")"); if ($rezultat == „adevărat”) ( echo „Înregistrarea adăugată cu succes!”; ) else ( echo „Înregistrarea nu a fost adăugată!”; )

Cu alte cuvinte, dacă variabila $result este adevărată, va fi afișat un mesaj că înregistrarea a fost adăugată. În caz contrar, se va afișa că înregistrarea nu a fost adăugată în baza de date.

Actualizarea informațiilor din baza de date. Declarație UPDATE

Declarația UPDATE este utilizată pentru a actualiza informațiile existente într-o bază de date. Sintaxa funcției mysql_query în acest caz este următoarea.

Acum să trecem la un exemplu. Să presupunem că trebuie să schimbăm numele și prenumele pentru un utilizator cu identificatorul $id în tabelul db_name. Puteți utiliza următorul cod pentru aceasta.

Acum să trecem la ultima parte a articolului și să ne uităm la ultima declarație DELETE, care este responsabilă pentru ștergerea informațiilor din baza de date.

Eliminarea informațiilor din baza de date. Declarația DELETE

Instrucțiunea DELETE este utilizată pentru a elimina câmpuri din baza de date. Sintaxa funcției mysql_query() în acest caz este următoarea.

Acum, ca de obicei, să trecem la un exemplu. Să presupunem că trebuie să ștergem un utilizator cu identificatorul $id din tabelul db_name. Puteți utiliza următorul cod pentru aceasta.

Aceasta încheie acest articol. Materialul nu este complicat, dar explicarea lui prin text este destul de dificilă. Totuși, cred că înțelegeți întreaga esență a materialului de mai sus. Dacă mai aveți întrebări despre acest articol, le puteți adresa oricând în comentarii.

Asta e tot. Mult succes și succes în învățarea PHP și MySQL.