Adăugați date către tabelul SQL PHP. Înregistrarea PHP în baza de date MySQL. Exemple practice. Salvarea intrărilor personalizate în baza de date

În această lecție, vom învăța să introducem MySQL în baza de date, datele introduse de utilizator în formular. Veți învăța cum să vă conectați la baza de date MySQL din codul paginii web, precum și la proces și să efectuați date în baza de date.


În lecția trecută, ți-am spus despre modul de a instala Denver pe computer, cum să creați baza de date, utilizator pentru aceasta, cum să creați un tabel în baza de date și l-am completat cu o singură intrare.

În această lecție, vom crea un document HTML pentru a introduce informații despre utilizator, precum și un procesor de fișiere PHP al acestor informații care va procesa datele care le conectează la baza de date MySQL și va introduce noi înregistrări acolo.

Întorcându-se de la cuvintele la litera să începem.

Adăugați date personalizate în baza de date MySQL de pe pagina web

Prima etapă: Creați forma HTML. Pentru introducerea datelor

De la bun început, trebuie să ne pregătim pentru a lucra cu PHP, MySQL și pentru a testa codul scris pe computerul local. Pentru aceasta:

1. Rulați Denwer pe computerul dvs.

2. Deschis discul virtual., Creat de Denver (de exemplu, am un disc "Z"). Deschideți-l în continuare: Acasă - LocalHost - www - Creați acolo dosar nou Și dă-i un nume (voi da numele "db1").

3. Dacă lucrați în Adobe Dreamweaver, mergeți la managerul site-ului, faceți clic pe butonul "Nou", selectați calea către folderul nou creat ca o modalitate, puteți da un nume de salvare. După toate acestea, dosarul dvs. va apărea în panoul din dreapta al Adobe Dreamweaver.

1. Acum vom crea obiceiul fișier HTML. (Voi numi Info_form.html și salvați în DB1 creat în Doar Dosarul Creat) și codul de cod există pentru introducerea informațiilor. Tabelul nostru de utilizatori de baze de date nou_db are 4 câmpuri pe care utilizatorul le-ar putea completa (câmpul ID va fi completat automat). Pe baza acestui lucru, puteți crea următorul cod:

Document fara titlu










Aici, în parametrul "Acțiunea" formei noastre este înregistrată formular.php.. Acesta va fi un handler de fișiere pe care îl vom crea mai departe.

Să creăm încă fișierul stil.css pentru a da stiluri în forma noastră. Acesta este deja conectat în cod, deci rămâne doar pentru ao crea, puneți-l în același folder ca și fișierul HTML și înregistrați următorul cod în acesta:

Corp (lățime: 400px; Margine: 0 Auto, fundal: # F8F4B6;) Etichetă (afișaj: bloc; float: stânga; lățime: 150px; Padding: 0 10px; Margin: 18px 0 0; Text-align: dreapta;) Trimiteți (float: dreapta; Marginea: 5px 50px 10px 0;)

Acum forma arată astfel:

Cu toate acestea, dacă introduceți datele și încercați să trimiteți formularul, veți vedea un bug, deoarece nu există fișiere FORM.PHP în directorul scripturilor.

Crearea unui fișier de procesare este următoarea noastră sarcină.

2. Să mergem în interiorul dosarului dB1. Creați un dosar numit "Scripturi". În ea, vom salva toate scripturile noastre de interacțiune cu baza de date MySQL.

După crearea dosarului, creați un nou fișier PHP și salvați-l în dosarul Scripts sub numele formular.php..

Dar, înainte de a merge direct la fișierul de informații, trebuie mai întâi să vă conectați la baza noastră de date. Vă sugerez să creați un fișier separat pentru acest lucru și de aceea:

Cel mai probabil în proiectul dvs. va trebui să vă conectați la baza de date MySQL nu numai dintr-un fișier. De regulă, cu baza de date interacționează diverse fișiere Proiect.
Este foarte impractic în fiecare astfel de fișier pentru a prescrie același cod de conectare la baza de date. Și dacă astfel de fișiere, de exemplu, vor fi de 50 și o zi schimbați parola pentru utilizator și va trebui să căutați toate aceste 50 de fișiere și în fiecare pentru a corecta.
Este mult mai convenabil să utilizați un fișier separat pentru a vă conecta la fiecare fișiere în care trebuie conectată conexiunea la baza de date MySQL. În acest caz, va trebui să faceți corecții numai într-un singur fișier.

Deci, să creăm un nou fișier PHP, să-l numim conectați.php. Și puneți în dosarul pentru scripturi. În aceasta, scriem codul de conectare cu baza de date MySQL, precum și codul care va raporta erorile în cazul apariției lor. Rețineți că, ca parametri, trebuie să vă înregistrați numele de utilizator, parola și numele de bază de date. Ca o gazdă ar trebui să fie localhost.

Eroare la conectarea la baza de date! "Mysql_error ()."

"); MySQL_SELECT_DB (" New_db ") // parametru în paranteze (" numele bazei cu care vă conectați ") sau DIE ("

Eroare de selecție a bazei de date! "Mysql_error ()."

"); ?>

Acum, să mergem la fișierul Form.php și să conectăm fișierul conexiune.php la acesta utilizând următorul cod:

Dacă încercați acum să trimiteți formularul, veți vedea după trimiterea unei pagini web goale. Acest lucru este normal, de când ne-am alăturat la bază și nu mai luăm nimic altceva.

Dacă ați văzut un mesaj de eroare, verificați corectitudinea tuturor parametrilor (nume de utilizator, parolă, nume de gazdă: localhos, nume de bază de date) și detectați că Denver este pornit.

3. Ne-am conectat cu succes cu baza de date MySQL și acum avem nevoie luați datele introduse în formularul de handler de fișiere. Acest lucru ne va ajuta cu atributele "nume" care sunt prezente în documentul HTML.

Pentru a obține date, vom folosi specialitatea variabila PHPPresupunând-ne cu toate informațiile de pe formularul web. Această variabilă se numește "$ _request".

Scrieți în fișierul Form.php după conectarea fișierului conexiune.php, următorul cod:

$ First_Name \u003d $ _Request ["primul_name"]; $ Last_name \u003d $ _request ["last_name"]; $ email \u003d $ _Request ["e-mail"]; $ Facebook \u003d $ _Request [Facebook];

4. Am primit date în dosar și le-am enumerat în variabile. Acum aveți nevoie trimiteți aceste date la tabelul nostru de bază de date MySQL. Pentru aceasta de mai jos, trebuie să înregistrați următorul cod:

$ insert_sql \u003d "Introduceți în utilizatori (First_Name, Last_Name, Email, Facebook)". "Valori (" ($ First_name) "," ($ last_name) "," ($ email) "," ($ Facebook) ");" Mysql_query ($ insert_sql);

Aici, mai întâi formăm o cerere, spunând că trebuie să introducem variabilele corespunzătoare în câmpurile corespunzătoare ale mesei "Utilizatori". Introducem această solicitare la variabila "$ insert_sql". Apoi, folosind o funcție specială MySQL_Query, efectuăm această solicitare.

Dacă acum completați și trimiteți un formular, apoi uitați-vă la tabelul "Utilizatori" din baza de date, atunci veți vedea o intrare nouă care a apărut acolo după trimitere.

5. Am introdus o nouă intrare din pagina web din tabelul de bază de date MySQL. Acum vreau să ating un pic din formatul în care sunt introduse datele noastre.

În primul rând, trebuie să aveți grijă de această situație atunci când o persoană care completează formularul poate pune lacune inutile la începutul contribuției informațiilor. Ei trebuie să renunțe.

În al doilea rând, avem un câmp Facebook. Dacă dorim ulterior să afișăm aceste informații ca un link, atunci este necesar să aveți grijă, astfel încât datele din acest câmp să fie stocate în formatul corect (adică "http://www.facebook.com/identifier pe Facebook "). Dar utilizatorul nu va introduce întotdeauna aceste date, deoarece avem nevoie. Poate intra: "www.facebook.com / Facebook", "Facebook.com / Facebook pe Facebook" sau pur și simplu "/ identificator pe Facebook".

Aceste situații ar trebui evitate. Pentru a face acest lucru, să aplicăm codul nostru. Posibile lacune suplimentare Am tăiat cu o funcție tundeși verificați corectitudinea adresei URL introduse pentru Facebook va fi o funcție preg_match.. Astfel, întregul cod al fișierului Form.php va arăta astfel:

Document fara titlu Noua intrare este inserată în baza de date!

"; ?>

Despre funcția preg_match.:
Aceasta este o funcție pentru căutarea cu expresii regulate.

Primul parametru din paranteze este o expresie regulată, al doilea - un șir unde trebuie să căutați.

Funcția returnează numai prima coincidență: 0 - dacă nu există meciuri, 1 - dacă există o coincidență.

Încercați acum să completați în mod intenționat formularul făcând spații inutile la începutul umplerii unor câmpuri și introducerea adresei pentru Facebook fără http: // sau în general, introducerea numai pe Identificatorul Facebook. Trimiteți o solicitare, apoi mergeți la baza de date și veți vedea că, în ciuda faptului că nu completați în întregime, datele au exact tipul de care avem nevoie.

La aceasta voi termina această lecție. Toate fișierele acestei lecții pe care le puteți descărca în sursă (doar nu uitați să corectați parametrii în fișierul dvs. Connect.php).

Și în următoarea lecție vom învăța să extragem informații din baza de date MySQL, să selectați intrările dorite și să le afișăm pe ecran. Pentru a nu sări peste următoarea lecție, abonați la actualizarea blogului utilizând formularul de abonament pe care îl vedeți mai jos.

Lăsați comentariile dvs. și împărtășiți cu prietenii utilizând butoanele rețelelor sociale.

Succesuri și la întâlnirea din următoarea lecție!

De la autor: Eh, nu poți arunca cântecele melodiilor! Dar le puteți șterge, actualiza sau lipi pe alții. Principalul lucru este că cuvintele au fost făcute în baza de date. Astăzi vom spune modul în care datele sunt înregistrate în MySQL și cum să faceți acest lucru pentru a suna melodia!

Adăugați înregistrări folosind phpMyAdmin

În cochilia PhpMyAdmin pentru a administra MySQL DBMS a implementat funcția "ușoară" noile înregistrări În tabelul bazei de date. Din cauza simplității sale, este ideal atât pentru "ceainurile" verzi, cât și pentru profesioniștii "leneși".

Pentru a fi furat informație nouă Tabelul ar trebui să meargă la program în conformitate cu drepturile administratorului. Apoi selectați baza de date dorită și masa din stânga. După aceea, în meniul de sus, treceți prin elementul "Paste".

După aceasta, pentru a intra în baza de date MySQL, completați fereastra următoare pentru toate coloanele câmpului "Value" și apăsați "OK" de mai jos.

În ecranul de mai sus, se poate observa că tabelul modificabil "Animale" constă din două coloane (câmpuri): ID și nume. În cea de-a doua secțiune, este specificat tipul fiecărei coloane. Trebuie să facem o valoare numai pentru câmpul Nume, deoarece coloana de identitate este cheia primară, iar pentru aceasta, atunci când creați o masă, este setată o autoincomder. Acest lucru înseamnă că valoarea câmpului ID va fi generată automat de MySQL, adăugând la valoarea numerică anterioară numerică 1.

Pentru a afla ce câmpul de înregistrare a datelor din MySQL este cheia primară (cheia primară), în PhpMyAdmin, mergeți la meniu (cu tabelul selectat din stânga din listă) în fila Meniu de sus a "structurii". Iată o descriere a tuturor câmpurilor de câmp, tipul lor și caracteristici suplimentare.

Introduceți datele utilizând interogări SQL

Dar PhpMyadmin este doar o cochilie, iar administratorii adevărați "comunică" cu serverul MySQL folosind limba interogărilor structurate. Adică "vorbește" cu el în SQL. Deoarece ne străduim să devenim profesioniști reali, apoi un pic "plonjor" în studiul comenzilor SQL în cadrul subiectului în cauză. Iată o solicitare introducând care în câmpul "SQL", veți crea aceeași bază de date:

Creați animalul de masă (ID MIDLIAINT NU NULL AUTO_ININTIMENT, Nume Char (30) Nu Null, Cheie primară (ID));

Creați un animal de masă (ID MIDLIAINT NU NULL AUTO_ININTIMENT,

numele Char (30) Nu este nul, cheie primară (ID));

După crearea unui tabel și înregistrați datele în baza de date MySQL. (Prin fila "Paste", programul vă va informa că linia a fost adăugată la animale cu valoarea identificatorului 1. Și codul de solicitare va fi afișat ușor în fereastra editorului, care pentru noi a format coaja și trimisă serverul de baze de date.

Codul de solicitare:

Introduceți în "My_db1". Valorile (`id`, numele") (NULL, "CAT");

Introduceți în "my_db1`. "Animale" (`id`, nume ') valori (," pisică ");

Să-l studiem mai detaliat. În SQL, un operator de inserare este utilizat pentru a introduce o nouă linie la masă. El informează serverul că în tabelul de bază de date (My_db1. Animal) este necesar în câmpul ID și numele introduceți valorile specificate (valori (nul, "pisica").

Fiți atenți că coloana de identificare nu indicăm o valoare numerică, dar nulă, deoarece pentru acest câmp am "inclus" Autofill (auto-increment).

Cum se introduce o înregistrare cu PHP

Toți cei considerați de noi este doar un "preludiu" la acțiunea principală, care merge la scena "Înălțimea Lui" Server de programare PHP. Este datorită lui că MySQL ca DBMS a primit o astfel de distribuție în rețea.
Ligamentarea acestor două tehnologii de internet a construit cea mai mare parte a World Wide Web. Unde se uită foarte mult, oriunde le veți găsi: în CMS modern, motoarele "auto-scrise" și pe server.

Nu este surprinzător faptul că înregistrarea datelor în MySQL PHP oferă atât de multe caracteristici încorporate. Dar ne vom concentra pe cea mai importantă. Iată un cod care adaugă un nou "animal" în tabelul animalelor. Dacă încercați din greu, atunci puteți colecta o poreclă întreagă :)

$ Con_str \u003d mysql_connect ("localhost", "rădăcină", \u200b\u200b"", "db1"); dacă (MySQL_CONNECT ("localhost", "rădăcină")) (Echo "Bună ziua!") mysql_select_db ("db1", $ con_str); $ Query_str \u003d "inserați în" DB1 "." Valori (`id`," nume "(," câine ")"; Mysql_query ($ query_str); mysql_close ();

$ Con_str \u003d mysql_connect ("localhost", "rădăcină", \u200b\u200b"", "db1");

dacă (mysql_connect ("localhost", "rădăcină")) (

echo "Bună ziua!" ;

mysql_select_db ("db1", $ con_str);

$ Query_str \u003d. "Introduceți în" DB1 "" ("ID", "Nume") (Null, "câine") ";

mysql_query ($ query_str);

mysql_close ();

Acest cod trebuie introdus în fișier PHP. Și plasați-o pe partea serverului.

Folosind funcția MySQL_CONNECT (), ne conectăm la serverul de baze de date datele MySQL.. Ca argument, funcția acceptă gazda, numele de utilizator al DBMS, parola și numele bazei la care trebuie să vă conectați. Avem o parolă goală, deoarece folosim serverul instalat pe mașina locală (client).

Pentru a demonstra toate exemplele descrise de scriere la baza de date MySQL folosind PHP, am folosit gentelmenul stabilit de Denver. Include server local Apache, Server MySQL, PhpMyAdmin și câteva mijloace mai utile de a crea și de a testa codul programului.

Apoi, în blocul logic, dacă am verificat prezența unei conexiuni la serverul de baze de date. După aceasta, în funcțiile MySQL_SELECT_DB (), denotăm baza la care ne vom conecta. Folosind funcția MySQL_Query (), ați lansat o interogare SQL înregistrată la variabila $ Query_str. Și la sfârșit închis conectare instalată (Funcția mysql_close ()). Acum, dacă privim în propriul animal (masă de animale, veți găsi un nou "animal de companie" acolo.

Pentru ao scrie în MySQL PHP "curtoazie", cu condiția întregului set necesar de funcții. Principalul lucru este ceea ce "arde" nou-veniți atunci când utilizați SQL în codul programului este scrisul incorect al cererilor, încălcarea sintaxei și alternarea semnelor pentru ecranare (citate).

Pentru a evita apariția părului inutil "cu părul gri" pe cap, este mai bine să verificați corectitudinea scrisului de a scrie o interogare folosind PhpMyAdmin. Pentru a face acest lucru, plasați codul SQL în editorul de programe și executați-l pentru a executa. Dacă ceva este greșit, aplicația va începe "jura", va afișa o culoare roșie și va indica locația erorii.

După cum puteți vedea, folosind MySQL, puteți să vă colectați propria poreclă și să schimbați corect cuvintele oricărui "melodie". Și pentru scrierea la baza MySQL Php Potrivit, așa că vă sfătuim să aveți o prietenie "aproape" cu acest limbaj de programare "mare"!

În acest ghid, vă veți familiariza cu modul în care să începeți să guvernați baza de date de la dvs. PHP.script. Veți explora adăugând o intrare în tabelul MySQL,folosind. Cod PHP.. Înainte de a începe, citiți celelalte manuale care dezvăluie pașii principali de lucru cu PHP și baze de date - Conectați-vă de la PHP în baza de date MySQL (engleză).

Înainte de a începe, verificați prezența următoarelor:

  • Accesați panoul de control al găzduirii

Pasul 1 - Crearea unei mese

În primul rând, trebuie să creăm un tabel pentru datele dvs. Aceasta este o procedură foarte simplă pe care o puteți face phpmyadmin. De la panoul de control al găzduirii. Am descris deja procesul de baze de date MySQL în manualul anterior (engleză), așa că vom sări peste acest moment aici.

După ce vă conectați la PhpMyAdmin, veți vedea o imagine similară:

Creați un tabel intitulat Elevi. Pentru baza noastră de date u266072517_name.. Creați un nou tabel poate fi numit Creați tabelul. După aceea veți vedea pagina nouaunde puteți introduce toate datele necesare pentru tabelul dvs.:

Acesta este cel mai simplu mod de a crea o masă, pentru mai multe informații despre structura tabelului / bazei de date și care setări pot fi utilizate pentru fiecare câmp, consultați documentația formală PhpMyAdmin (engleză).

Iată câteva explicații simple a câmpurilor pe care le vom folosi:

  • Nume. - Acesta este numele câmpului tău. Acesta va fi afișat în partea de sus a tabelului.
  • Tip - Puteți seta tipul de câmp aici. De exemplu, alegem varchar.Deoarece aici trebuie să introducem un șir cu numele (în care există litere, nu numere).
  • Lungime / valori. - Folosit pentru a seta lungimea maximă a intrării în acest câmp.
  • Index - Folosim indicele primar pentru câmpul nostru "ID". Când se creează un tabel, se recomandă să aveți un câmp de identitate. Este folosit pentru indexarea înregistrărilor în tabel atunci când relațiile sunt configurate între tabele. De asemenea, poate fi notat aici "A_I"Ce înseamnă INCREMENT AUTO.. Această setare va crește automat indicele (1,2,3,4 ...).

Clic Salvați. Și masa dvs. va fi creată.

Pasul 2 - Creați un cod PHP și adăugați o intrare în tabelul MySQL

Opțiunea 1 - Metoda Mysqli

În primul rând, trebuie să stabiliți o conexiune a bazei de date, conform managementului nostru anterior. După aceea, putem continua cu solicitarea SQL pentru a adăuga o intrare în tabelul MySQL - Introduce.. Iată un cod complet de probă cu metoda de conectare și inserare:

"mysqli_error ($ conn);) mysqli_close ($ conn);?\u003e

Astfel, prima parte a codului (șir 3 – 18 ) Rafină o parte din stabilirea unei conexiuni la baza de date. Nu vom reveni prin această parte dacă doriți să știți ce înseamnă fiecare șir, consultați managementul nostru anterior Cum se conectează la baza de date (engleză).

Să începem cu linia 19 :

$ Sql \u200b\u200b\u003d "Introduceți valorile studenților (nume, lastname, e-mail) (" Thom "," flacon "," [E-mail protejat]")";

Aceasta este cea mai importantă linie a codului, face totul pe măsură ce descriem în acest manual - adăugarea unei intrări la tabelul MySQL la baza de date. INTRODU IN - Aceasta este o expresie care adaugă o intrare la tabelul bazei de date MySQL specificat. În exemplul nostru, adăugăm date la masă Elevi..

Mergând pe, în paranteze, definim câmpurile de masă, valorile în care vom adăuga: (Nume, nume, e-mail). Datele vor fi adăugate în definitive. Dacă scriem (E-mail, nume, nume, nume)Valorile vor fi adăugate într-o altă ordine.

Partea următoare a valorii Valori.. Aici ne cerem valorile noastre în câmpurile specificate anterior. Astfel, fiecare domeniu își va primi valoarea. De exemplu, în cazul nostru, va fi ceva de genul: nume \u003d Thom, Lastname \u003d flacon, e-mail \u003d [E-mail protejat] .

Ceea ce este important să rețineți că formăm sQL SolicitareFolosind codul PHP. Solicitările SQL trebuie să fie închise în citate. În exemplul nostru, totul este între citate și mers pe jos după $ sql \u003d aceasta este o interogare SQL.

Partea următoare a codului ( 20 – 22 Șiruri) rulează cererea noastră și verifică succesul executării interogării:

Dacă (MySqli_Query ($ Conn, $ SQL)) (ECHO "Record nou creat cu succes";)

Un mesaj despre noroc este afișat dacă cererea a funcționat corect.

Și partea finală ( 22 – 24 Linii) Afișați un alt mesaj, în cazul executării nereușite a cererii noastre:

Altceva (ecou "eroare:" $ sql. "
"mysqli_error ($ Conn);)

Acest cod afișează un mesaj despre eroare, în cazul în care ceva a mers prost.

Opțiunea 2 - Metoda obiectului de date PHP (P HP D ATA O Bject)

Ca și în exemplul anterior, trebuie mai întâi să ne conectăm la baza de date, care se efectuează atunci când se creează un nou obiect DOP - ghidul anterior spune despre modul în care se întâmplă. Deoarece conexiunea la baza de date MySQL este un obiect DOP, trebuie să folosim diferite metode DOP "(un fel de funcții care fac parte dintr-un obiect specific) pentru a pregăti și a începe o interogare. Metodele de obiecte sunt cauzate în acest mod:

$ The_object-\u003e the_method ();

DOP vă permite să "pregătiți" codul SQL înainte de execuția sa. Interogarea SQL este calculată și ajustată înainte de a începe. Deci, un simplu atac de către SQL Injection Umplerea codului SQL poate fi efectuată în câmpul Formular. De exemplu:

.

Deoarece codul SQL este corect sintactic, un punct cu o virgulă face Drop baza de date user_table. Noua interogare SQL, iar tabelul dvs. de utilizator a fost eliminat. Pregătirea expresiilor nu permite simbolurile și ; Pentru a finaliza cererea sursă și instrucțiunile Drop baza de date. Nu executați niciodată.

Mereu Utilizați interogările pregătite atunci când trimiteți sau primiți date din baza de date cu DOP.

Pentru a utiliza expresiile pregătite, trebuie să creați o nouă variabilă care va cauza metoda a pregati () La obiectul bazei de date.

În forma corectă, codul arată:

$ servername \u003d "mysql.hostinger.com"; $ Baza de date \u003d "U266072517_name"; $ username \u003d "U266072517_User"; $ parola \u003d "buystuffpwd"; $ Sql \u200b\u200b\u003d "mysql: gazdă \u003d $ servername; DBNAME \u003d $ Baza de date;"; $ dsn_options \u003d; // Creați o nouă conexiune la baza de date MySQL utilizând DOP, $ my_db_connection este un obiect încercați ($ my_db_connection \u003d New DOP ($ sql, $ nume de utilizator, $ parola, $ dsn_options); echo "conectat cu succes";) captura (PDOException $ " Eroare) (EROU "Eroare de conectare:" $ error-\u003e getMessage ();) // Setați variabilele pentru baza de date $ First_name \u003d "Thom"; $ last_name \u003d "flacon"; $ email \u003d " [E-mail protejat]"; Pregătiți-vă ("Introduceți în studenți (nume, lastName, e-mail) Valori (: First_Name, Last_Name, e-mail)"); // Acum spunem script-ului care variabile fiecare substituent se referă de fapt la utilizarea metoda BILLPRAM () / / Primul parametru este substituentul în declarația de mai sus - al doilea parametru este o variabilă pe care ar trebui să o facă referire la $ my_insert_statement-\u003e Buthparam (: primul_name, $ primul_name); $ my_insert_statement-\u003e Last_name, $ last_name); $ my_insert_statement -\u003e BILLARAM (: e-mail, $ email); // executați interogarea utilizând datele pe care le-am definit // metoda Execute () returnează adevărata dacă este reușită și falsă dacă nu este, permițându-vă să scrieți propriile mesaje aici Dacă ($ my_insert_statement-\u003e Execute ()) (ecou "nou înregistrat creat cu succes";) el SE (ecou "Imposibil de creat înregistrare"; ) // În acest moment puteți modifica datele variabilelor și puteți executa din nou pentru a adăuga mai multe date în baza de date $ First_name \u003d "John"; $ last_name \u003d "Smith"; $ email \u003d " [E-mail protejat]"$ My_insert_statement-\u003e Execute (); // executați din nou acum că variabilele s-au schimbat dacă ($ my_insert_statement-\u003e Execute ()) (ecou" înregistrare nouă creată cu succes ";) altceva (eco" Imposibil de creat înregistrare "; )

În liniile 28, 29 și 30, folosim metoda bILDIRAM () Obiectul bazei de date. Există, de asemenea, o metodă bINDVALUE ()diferită de cea anterioară.

  • bINDIRAM () -această metodă contează datele când metoda a executa () realizat. Prima dată când scenariul vine la metodă a executa () El vede asta $ primul_name. Se referă la "Thom", conectează această valoare și îndeplinește solicitarea. Când scriptul primește a doua oară înainte de metodă a executa ()el arată ca $ primul_name. Acum se referă la "John", conectează această valoare și lansează o cerere din nou cu o nouă valoare. Este important să înțelegem că vom crea o cerere o dată și apoi să înlocuim date diferite în diferite secțiuni ale scenariului.
  • bINDVALUE () -această metodă calculează datele de îndată ce va veni coada. Ca valoare $ primul_name. a fost întrebat ca "Thom" în momentul în care am ajuns la metodă bINDVALUE ()Acesta va fi folosit la apelarea metodei A executa () pentru $ My_insert_statement..

Rețineți că reutilizează variabila $ primul_name. Și o punem o nouă valoare pentru a doua oară. Dacă verificați baza de date după ce ați pornit acest script, va fi ambele nume specificate, contrar acestei valori a variabilei $ primul_name.va fi "John" la sfârșitul acestui scenariu. Amintiți-vă că PHP estimează conținutul scriptului înainte de a începe acest lucru.

Dacă modificați scriptul dvs. înlocuind bILDIRAM. pe bindValue.Veți adăuga "flaconul Thom" în baza de date MySQL de două ori la baza de date și John Smith va fi ignorată.

Pasul 3 - Verificați succesul îndeplinirii și rezolvarea problemelor generale

Dacă interogarea pe care am lansat-o în baza de date MySQL a avut succes, vom vedea un astfel de mesaj:

Rezolvarea greșelilor comune

Mysqli.

În orice alt caz, va fi afișat un mesaj de eroare în locul mesajului. De exemplu, să spunem o eroare sintactică în codul nostru și vom obține acest lucru:

După cum vedem, prima parte a codului este în ordine, conexiunea a fost instalată cu succes, dar interogarea noastră SQL sa ciocnit cu eșec.

"Eroare: Introduceți valorile studenților (nume, nume, e-mail) (" Thom "," flacon "," [E-mail protejat]") Aveți o eroare în sintaxa SQL; verificați manualul care corespunde versiunii MySQL Server pentru sintaxa potrivită pentru a utiliza" (nume, lastname, e-mail) valori ("Thom", "flacon", " [E-mail protejat]")" La linia 1 "

Este permisă o eroare de sintaxă care nu reușește în execuția scenariului nostru. Eroarea a fost aici:

$ Sql \u200b\u200b\u003d "Introduceți valorile studenților (nume, lastname, e-mail) (" Thom "," flacon "," [E-mail protejat]")";

După cum puteți vedea, folosim bretele curat în loc de rotund. Este incorect și duce la o eroare sintactică în scenariul nostru.

DO.

În linia de conectare POP 7, modul de manipulare a erorilor este setat la "Afișarea tuturor excepțiilor" (afișați toate excepțiile). Dacă îl eliminați din script și cererea va eșua, nu veți primi niciun mesaj de eroare. Cu excepțiile activate, vor fi afișate probleme specifice care apar. Practic, este mai bine să utilizați când dezvoltați un script, deoarece acest lucru poate identifica numele de baze de date și tabele pe care doriți să le ascundeți de la oricine poate obține acces neautorizat la datele dvs. În cazul de mai sus, când s-au folosit parantezele curbate în loc de rundă, eroarea arată ca imaginea de mai jos:

Eroare fatală: excepție de neclamă "PDOexception" cu mesajul "SQLSTATE: eroare de sintaxă sau încălcare a accesului: 1064 Aveți o eroare în sintaxa SQL; verificați manualul care corespunde versiunii MySQL Server pentru sintaxa potrivită pentru a utiliza "(nume, lastname, e-mail) valori (" thom "," flacon "," [E-mail protejat]")" La linia 1 "

Alte probleme cu care vă puteți întâlni:

  • Câmpuri specificate incorect (câmpuri sau erori inexistente în titluri de scriere).
  • Malconformitatea tipului de tip de câmp. De exemplu, atunci când dorim să atribuim valoarea numărului 47 Camp Nume.Vom primi o greșeală deoarece se presupune că valoarea va fi un șir. Dar dacă specificați un număr în ghilimele, de exemplu, “47” , Nu vor exista erori, deoarece numărul nostru va fi înregistrat ca șir în acest domeniu.
  • O încercare de a introduce date într-un tabel care nu există sau o eroare în scrierea numelui tabelului.

Toate aceste erori pot fi corectate după manuale de corectare a erorilor sau pot verifica jurnalul de eroare (engleză).

După adăugarea cu succes a datelor, trebuie să le vedem în baza noastră de date. Iată un exemplu al unei mese în care am adăugat datele noastre dacă vă uitați la phpmyadmin..

Concluzie

În acest ghid, ați studiat cum să utilizați Cod PHP pentru a adăuga o intrare în tabelul MySQLfolosind. Mysqli. și DO.. De asemenea, a revizuit cazurile de erori și soluții comune. Știind cum să utilizați codul PHP pentru a adăuga la baza de date MySQL este utilă indiferent dacă învățați să programați sau să creați deja site-ul dvs. web.

În acest articol, vom analiza modul de utilizare a PHP pentru a insera rândurile în baza de date MySQL.

Pasul 1 - Crearea unei mese

Mai întâi trebuie să creați un tabel pentru date. Aceasta este o procedură simplă care poate fi efectuată utilizând PhpMyAdmin în panoul de control al hostingului.

După intrarea în tine PhpMyAdmin veți vedea o astfel de interfață:

Creați o masă cu numele studentului în baza de date U266072517__ nume făcând clic pe butonul "Creare tabel". După aceea, vom vedea o nouă pagină pe care specificați toți parametrii necesari ai mesei:

Acesta este cel mai mult simplu Setupcare pot fi utilizate pentru o masă și mai multe informații despre structura tabelelor / bazelor de date.

Parametrii coloanei:

  • Numele este numele coloanei care este afișat în partea de sus a tabelului.
  • Tipul de coloană. De exemplu, am ales Varchar deoarece vom introduce valori ale șirului.
  • Lungimea / valorile - utilizate pentru a indica lungimea maximă, care poate fi înregistrată în această coloană.
  • Index - Am folosit indicele "primar" pentru câmpul "ID". Când creați un tabel, se recomandă aplicarea unei singure coloane ca o cheie primară. Se utilizează pentru a lista intrările din tabel și este necesară când se configurează tabelul. De asemenea, am remarcat "A_I", ceea ce înseamnă "increment auto" - parametrul de atribuire automată a recorderii (1,2,3,4 ...).
    Faceți clic pe butonul Salvare, iar tabelul va fi creat.

Pasul 2. Scrierea unui cod PHP pentru introducerea datelor în MySQL.

Opțiunea 1 - Metoda Mysqli

Mai întâi trebuie să stabiliți o conexiune la baza de date. După aceea, utilizați cererea Inserare SQL. Codul complet al eșantionului:

"mysqli_error ($ conn);) mysqli_close ($ conn);?\u003e

Prima parte a codului (3 - 18 rând) este proiectată să se conecteze la baza de date.

Să începem de la numărul 19:

$ Sql \u200b\u200b\u003d "Introduceți valorile studenților (nume, lastname, e-mail) (" Thom "," flacon "," [E-mail protejat]")";

Introduce datele în baza de date MySQL. Introduceți în este un operator care adaugă datele la tabelul specificat. În exemplul nostru, datele sunt adăugate la masa studenților.

Apoi este lista de coloane în care sunt introduse valorile: numele, numele de familie, e-mail. Datele vor fi adăugate în ordinea specificată. Dacă am scris (e-mail, nume, nume), valorile vor fi adăugate într-o altă comandă.

Următoarea parte este operatorul de valori. Aici specificăm valorile pentru coloane: Nume \u003d Thom, Lastname \u003d Flacon, Email \u003d [E-mail protejat]

Am lansat o solicitare utilizând codul PHP. În codul de interogare SQL trebuie să fie protejat cu citate. Următoarea parte a codului (20-22 rând) verifică dacă cererea noastră a avut succes:

dacă (Mysqli_Query ($ Conn, $ SQL)) (ECHO "NOU NOU RECORDATEDSUCESSUMSSUIN";)

Acest cod afișează un mesaj despre interogarea de succes.

Iar ultima parte (22 - 24 rând) afișează notificarea dacă cererea nu a reușit:

altceva (ecou "eroare:" $ sql. "
"mysqli_error ($ Conn);)

Opțiunea 2 - Metoda Obiect de date PHP (DOP)

În primul rând, trebuie să vă conectăm la baza de date prin crearea unui nou obiect DOP. Când lucrați cu acesta, vom folosi diferite metode DOP. Metodele de obiecte sunt cauzate după cum urmează:

$ The_object-\u003e the_method ();

DOP vă permite să "pregătiți" codul SQL înainte de a fi executat. Solicitarea SQL este evaluată și "corectată" înainte de lansare. De exemplu, cel mai simplu atac care utilizează injecția SQL poate fi efectuat printr-o introducere simplă a codului SQL în câmpul Formular. De exemplu:

Deoarece este corectă sintactic Cod SQL, un punct de virgulă face o bază de date Drop User_table cu o nouă interogare SQL, iar tabelul personalizat este șters. Expresiile pregătite (variabilele conexe) nu permit punctul de vedere și citate să completeze cererea sursă. Prin urmare, comanda Drop Database nu va fi niciodată executată.

Pentru a utiliza expresiile pregătite, trebuie să scrieți o nouă variabilă care să apeleze metoda de pregătire () a obiectului bazei de date.

Codul corect:

getmessage (); ) // setați variabilele pentru persoana pe care vrem să o adăugați $ First_Name \u003d "Thom" la baza de date; $ last_name \u003d "flacon"; $ email \u003d " [E-mail protejat]"Nume, nume, e-mail) Valori (: First_Name,: Last_Name,: e-mail)"); // Acum specificăm scriptul, care variabilă se referă la fiecare substituent pentru a utiliza metoda BILLPRAM () // primul parametru Este un material de umplutură în operatorul de mai sus, a doua este o variabilă la care trebuie să se refere la $ my_insert_statement-\u003e butparam (primul_name, $ primul_name); $ my_insert_statement-\u003e Last_Name, $ last_name); $ my_insert_statement-\u003e BILDIRAM ( : e-mail, $ email); // efectuați o interogare utilizând datele care tocmai au fost determinate // Execute () returnează TRUE dacă este reușită și falsă, dacă nu, oferindu-vă posibilitatea de a afișa propriul mesaj ( $ My_insert_statement-\u003e Execute ()) (ecou "nou RECO. rdcreateatsucus "; ) Altfel (Echo "incapabil să creezeRecord";) // În acest moment puteți schimba aceste variabile și puteți executa solicitarea de a adăuga alte date la date în baza de date $ First_Name \u003d "John"; $ last_name \u003d "Smith"; $ email \u003d " [E-mail protejat]"$ My_insert_statement-\u003e Execute (); // Efectuați din nou când variabila este modificată dacă ($ my_insert_statement-\u003e EXECUTE () ()) (ecou" nou-recordCreatedScuTure ";) altceva (Echo" Imposibil de creatRecord ";

În liniile 28, 29 și 30, folosim metoda BILPARAM () a obiectului bazei de date. Există, de asemenea, o metodă de legume (), care este foarte diferită de cea anterioară.

  • bINDIRAM () - Această metodă estimează datele la atingerea metodei Execute. Pentru prima dată, când scriptul ajunge la metoda Execute (), aceasta vede că $ primul_name corespunde "Thom". Apoi se leagă de această valoare și începe cererea. Când scriptul atinge cea de-a doua metodă EXECUTE (), aceasta vede că $ First_name corespunde acum "John". După aceea, conectează această valoare și începe din nou o solicitare cu valori noi. Este important să vă amintiți că am definit o dată cererea și o reutilizare cu date diferite în diferite puncte ale scenariului.
  • bINDValue () - Această metodă evaluează datele de îndată ce este atinsă BINDVALUE (). Deoarece pentru $ First_Name, valoarea "Thom" a fost setată la Bindvalue (), va fi utilizată de fiecare dată când metoda Execute () este chemată pentru $ my_insert_statement.
    Rețineți că vom reutiliza variabila $ prima_name și o atribuie o nouă valoare pentru a doua oară. După pornirea scenariului în baza de date, vor fi specificate ambele nume, în ciuda faptului că variabila de $ First_Name la sfârșitul scenariului este "Ioan". Amintiți-vă că PHP verifică întregul script înainte de ao rula.

Dacă actualizați scriptul pentru a înlocui BIDLARAM pe Bindvalue, introduceți de două ori în baza de date "Thom flacon", iar John Smith va fi ignorat.

Pasul 3 - Confirmarea problemelor de implementare și rezolvare a problemelor

Dacă interogarea pentru a introduce rânduri la baza de date a avut succes, vom vedea următorul mesaj:

Eliminarea greșelilor comune

Mysqli.

În orice alt caz, va fi afișat un mesaj de eroare. De exemplu, să facem o eroare sintactică în cod și vom obține următoarele:

Prima parte a codului este în ordine, conexiunea a fost stabilită cu succes, dar cererea SQL nu a trecut.

"Eroare: Introduceți valorile studenților (nume, nume, e-mail) (" Thom "," flacon "," [E-mail protejat]") Aveți o eroare în sintaxa SQL; verificați manualul de verificare a versiunii Server MySQL pentru a utiliza valorile" (Nume, LastName, Email) ("Thom", "flacon" [E-mail protejat]")" La linia 1 "

A fost făcută o eroare de sintaxă care a provocat o eroare de script. Eroarea a fost aici:

$ Sql \u200b\u200b\u003d "Introduceți valorile studenților (nume, lastname, e-mail) (" Thom "," flacon "," [E-mail protejat]")";

Am folosit paranteze curat în loc de normal. Este incorect, iar scriptul a emis o eroare sintactică.

DO.

În linia 7 pdo conexiuni pentru modul de eroare set "Afișați toate excepțiile". Dacă este specificată o altă valoare, iar cererea nu ar reuși, nu am primi mesaje de eroare.

Această setare ar trebui să fie utilizată numai la dezvoltarea scriptului. Când este activat, pot fi afișate numele și tabelele bazei de date că este mai bine să se ascundă în scopuri de securitate. În cazul descris când, în loc de paranteze convenționale utilizate Curly, mesajul de eroare arată astfel:

Eroare fatală: Uncaghtexception "PDOException" cu mesajul "SQLSTATE: Eroare de sintaxă sau Accessiolare: 1064 Aveți o eroare în sintaxa SQL; verificați manualul care corespund versiunii Server MySQL pentru a utiliza valorile "(Nume, LastName, Email) (" Thom "," flacon " [E-mail protejat]")" La linia 1 "

Alte probleme posibile:

  • Coloanele sunt indicate incorect (coloane inexistente sau erori de ortografie în numele lor).
  • Un tip de valoare este atribuit o altă coloană de tip. De exemplu, dacă încercați să introduceți numărul 47 în coloana Nume, vom obține o eroare. În această coloană, trebuie să utilizați o valoare a șirului. Dar dacă am subliniat un număr în citate (de exemplu, "47"), ar funcționa, pentru că este un șir.
  • Încercarea de a introduce date într-un tabel care nu există. Precum și o eroare de ortografie admisă în numele tabelului.

După introducerea de succes a datelor, vom vedea că sunt adăugate la baza de date. Mai jos este un exemplu al unei mese în care datele adăugate.

Toate modulele site-ului sau aplicațiile web în care trebuie să efectuați și să scrieți unele date (de exemplu, numele, vârsta, adresa etc.) utilizează funcția simplă în limba MySQL Insert în valorile Name_Base "(numele, valoarea valorii1, valoarea2) ("Vasya", "1", "2");

Toate variabilele sunt aduse în baza de date în funcție de valorile pe care le-am specificat în primele paranteze. Este important să luați în considerare codificarea scriptului de procesor, a bazei de date și a fișierului de configurare. Este de dorit să se folosească cele mai frecvente codare UTF-8.

Ar trebui să se țină cont de faptul că puteți înregistra în baza de date în două moduri.

Prima metodă Dacă nu specificăm numele inițial al tabelelor bazei de date. Apoi, trebuie să menționăm toate variabilele pentru fiecare celulă, și anume câte celule din tabelul de baze de date, atât de multe variabile trebuie să fie enumerate în paranteze după valoare.

De exemplu:
În tabelul bazei de date, patru celule. Deci, după elementul de valoare (..), toate cele patru variabile trebuie să fie enumerate în paranteze. Și încă un punct: dacă variabila nu există, să spunem că acesta este un parametru opțional. Apoi scriem doar o valoare goală în citate ",

"Introduceți valorile" NAME_BASE "(Null," "$ Nume." "," "` `,` 2`) "; // a treia semnificație goală este scrisă în Citate

Dar această solicitare are defecte mici. Dacă adăugați o singură celulă sau două celule la tabelul bazei de date, atunci această solicitare va returna eroarea. Deoarece în această metodă este necesară lista tuturor celulelor din interogare.

Al doilea mod Dacă după introducerea inserției în "NAME_BASE" (...) Listați toate celulele după numele bazei de date. Un exemplu este deja considerat puțin mai mare. Dacă ați uitat, scrieți o re-:

"Introduceți în" Name_Base` ("Nume", "Valoare", "Valoare2`) Valori (null", `` `,` 2 ') ";

Aici am enumerat toate celulele (numele, valoarea1, valoarea2). Și dacă adăugați două celule suplimentare la tabelul bazei de date, sintaxa de interogare nu trebuie modificată. Dar dacă nu trebuie să adăugăm o dată într-o singură cerere, cele mai avansate variabile de care avem nevoie pentru acele celule nou create sunt.

Această eroare zboară foarte des, după o mică schimbare de pe site. Să presupunem că administratorul a adăugat o celulă suplimentară în baza de date, să spunem statutul. Și manipulatorul de script nu a avut timp să schimbe modulul, sau să-l uite elementar. Dar unele site-uri au o structură foarte complexă, iar o mulțime de timp și efort pot merge la căutarea de eroare. Prin urmare, este de dorit să se utilizeze a doua metodă de înregistrare în baza de date. Deși acest tip de greșeli mai adesea permit programatorii Web Novice.

Înregistrarea PHP în baza de date MySQL. Exemple practice

Deci, acum am ajuns la esența când lucrăm cu interogările bazei de date. Vom face totul în exemple practice. Creați un script simplu pentru a înregistra comentarii care vor părăsi vizitatorii site-ului.

Pentru a începe, creați o masă MSG într-o bază de date cu patru celule. În prima celulă scrie un cod de comentariu. Numărul de caractere dintr-o celulă este de până la zece caractere cu parametrul auto-increment. Acest parametru automat se va schimba de fiecare dată când comentariul este adăugat până la +1.

Nume utilizator Numele de utilizator celular. Numărul de caractere - la două sute - trei sute de caractere la alegere, parametrul char. Celula comentarii este apoi pentru a face textul de comentariu în această celulă. Dacă doriți să înregistrați texte mari de comentarii, puteți seta parametrul de text - atunci puteți introduce pur și simplu textele uriașe, mai mult de cinci sute de mii de caractere sau puteți seta parametrul TinyText, atunci va dura puțin mai puțin decât personaje, dar va funcționa puțin mai repede.

Dar, în cazul nostru, vom reține că vizitatorii nu vor scrie texte uriașe. Și, prin urmare, ne vom limita pe noi înșine și vom rezolva două mii de caractere cu parametrul Varchar, pentru a înregistra valorile șirului.

În ultima celulă vom scrie data înregistrării unui mesaj de comentariu. Vom scrie într-un format numeric în câteva secunde, folosind ora curentă și ora funcțională (); Pentru simplitate, funcția va seta ora \u003d ora () la variabila; Și creați o celulă în baza de date. Noi numim numele de timp cu parametrul INT (pentru valori numerice). Prophesim numărul de caractere este mai bine unsprezece (cu o rezervă mică pentru viitor :-).

Baza de date Dump:

Structura tabelului `msg` msg creare tabel (` int (10) nu nul auto_increment, `Nume 'char (250) nu ,` coment` int (11) nu nul, cheie primară (`` `` `` `)) motor \u003d Myisam Charset implicit \u003d utf8 auto_increment \u003d 1;

Totul, tabelul pentru comentarii create. Acum scriem un formular pentru a scrie un comentariu și eu însumi mâna. HTML-Codul de coduri pentru a introduce un comentariu Următorul.