Pridajte údaje do mysql php. Pridávanie údajov do PHP

V tomto príspevku vám chcem povedať ako preniesť do databázy zadané údaje vo formulári... A tak vytvoríme jednoduchý formulár, kde budeme mať dve polia: používateľské meno a jeho E -mail:

Tvoje meno:
Tvoj email:


Tento formulár je možné použiť na registráciu nového používateľa, na odosielanie noviniek, zbieranie štatistík a na čokoľvek ... Vo všeobecnosti používateľ vyplní svoje údaje do tohto formulára: meno a mail, klikne na tlačidlo a potom na údaje prejde do skriptu php:

$ name = $ _POST ["name"]; $ email = $ _POST ["email"]; $ result = mysqli_query ("INSERT INTO user (name, email) VALUES (" $ name "," $ email ")"); ak ($ ​​result) (echo „Údaje boli úspešne uložené!“;) else (echo „Vyskytla sa chyba, skúste to znova.“;)


Čo sa deje v tomto scenári? Poďme na to teraz!
Údaje zadané do formulára sa metódou POST prenesú do skriptu php (ktorý je napísaný vyššie) a pomocou globálneho poľa $ _POST sa údaje sformujú do premenných $ name a $ email:

$ name = $ _POST ["name"]; $ email = $ _POST ["email"];


Potom, čo sú premenné pripravené na vloženie do databázy, zostavíme požiadavku. Ale najskôr musia byť vaše skripty už pripojené k databáze, ako sa pripojiť k databáze, som napísal v tomto vlákne :. Samotná žiadosť vyzerá takto:

$ result = mysqli_query ("INSERT INTO user (name, email) VALUES (" $ name "," $ email ")");


V tomto kóde sme naznačili, že do buniek mena a e -mailu, ktoré sa nachádzajú v tabuľke používateľov, budú pridané nasledujúce premenné: $ name a $ email.
Ďalej, ak všetko prebehlo dobre, dostaneme správu z podmienky:

Údaje boli úspešne uložené!


Ak sa vyskytnú nejaké problémy a údaje neboli zadané, zobrazí sa chybové hlásenie:

Vyskytla sa chyba. Skúste to znova.


To je všetko!

*** *** *** *** ***

Ak chcete, môžete pridať ďalšie polia na zadávanie informácií, napríklad musíme pridať pole na zadanie mesta používateľa. Už máme pripravený skript (napísaný vyššie), teraz len pridáme pole Tvoje mesto, premennú pomenujeme: $ mesto. A tak vo formulári na zadávanie údajov po:

Tvoj email:


pridať:

Tvoje mesto:


V. skript php, po:

$ email = $ _POST ["email"];


pridať:

$ mesto = $ _POST ["mesto"];


A samozrejme pridávame žiadosť aj takto:

$ result = mysqli_query ("INSERT INTO user (name, email, city) VALUES (" $ name "," $ email "," $ city ")");


Tu by ste mali skončiť:
Vstupný formulár:

Tvoje meno:
Tvoj email:
Tvoje mesto:


Scenár:

$ name = $ _POST ["name"]; $ email = $ _POST ["email"]; $ mesto = $ _POST ["mesto"]; $ result = mysqli_query ("INSERT INTO user (name, email, city) VALUES (" $ name "," $ email "," $ city ")"); if ($ result == true) (echo "Údaje boli úspešne uložené!";) else (echo "Vyskytla sa chyba, skúste to znova.";)


Ako vidíte, nič zložité! V prípade potreby môžete pridať ďalšie pole a ďalšie a ďalšie ...

V tomto návode sa pozrieme na to, ako vkladať údaje do databázy priamo z vašich skriptov PHP.

Vkladanie údajov pomocou jazyka SQL

Na vkladanie údajov do databázy používate SQL rovnakým spôsobom, akým používate SQL na vytváranie databáz a tabuliek. Syntax dotazu SQL je nasledovná:

INSERT INTO TableName (stĺpec1, stĺpec 2, ...) HODNOTY (hodnota1, hodnota 2, ...)

Ako vidíte, môžete aktualizovať viac stĺpcov v jednom príkaze SQL tak, že ich zadáte v zozname oddelenom čiarkami. Ale samozrejme môžete tiež zadať iba jeden stĺpec a jednu hodnotu. Stĺpce, ktoré nie sú uvedené v tomto príkaze SQL, zostanú prázdne.

Príklad: Vloženie novej osoby do tabuľky

V tomto prípade používame databázu z lekcie 18. Povedzme, že chceme vložiť osobu do databázy. To môže byť Gus hus s telefónnym číslom 99887766 a dátum narodenia 1964-04-20 .

Príkaz SQL môže vyzerať takto:

$ strSQL = "VLOŽIŤ DO ĽUDÍ (Meno, Priezvisko, Telefón, Dátum narodenia) HODNOTY (" Gus "," Husa "," 99887766 "," 1964-04-20 ")";

Ako vidíte, príkazy SQL môžu byť poriadne dlhé a ľahko sa stratíte. Preto je lepšie napísať príkaz SQL trochu inak:

strSQL = "VLOŽIŤ DO ĽUDÍ ("; strSQL = strSQL. "Krstné meno,"; strSQL = strSQL. "Priezvisko," strSQL = strSQL. "Telefón"; strSQL = strSQL. "narodenie)"; strSQL = strSQL. "HODNOTY ("; strSQL = strSQL. "" Gus ","; strSQL = strSQL. "" Hus ","; strSQL = strSQL. "" 99887766 ","; strSQL = strSQL. "" 1964-04-20 ")"; mysql_query ($ strSQL) alebo die (mysql_error ());

Tu je príkaz SQL vytvorený tak, že ho rozdelíte na malé časti a potom ich zreťazíte do premennej. $ strSQL.

V praxi nie je rozdiel v aplikácii jednej alebo druhej metódy, ale pri práci s veľkými stolmi sa stáva mimoriadne dôležitou schopnosť „sledovať“, preto zvoľte najvhodnejšiu metódu.

Skúsme vložiť Gus Goose do databázy nasledujúcim kódom:

Vkladanie údajov do databázy // Pripojte sa k databázovému serveru mysql_connect ("mysql.myhost.com", "užívateľ", "sezam") alebo die (mysql_error ());// Výber databázy mysql_select_db ("mydatabase") alebo die (mysql_error ()); // Zostavte príkaz SQL $ strSQL = "VLOŽIŤ DO ĽUDÍ ("; $ strSQL = $ strSQL. "Krstné meno,"; $ strSQL = $ strSQL. "Priezvisko,"; $ strSQL = $ strSQL. "Telefón"; $ strSQL = $ strSQL. "Dátum narodenia)"; $ strSQL = $ strSQL. "HODNOTY ("; $ strSQL = $ strSQL. "" Gus ","; $ strSQL = $ strSQL. "" Hus ","; $ strSQL = $ strSQL. "" 99887766 ","; $ strSQL = $ strSQL. "" 1964-04-20 ")"; // Príkaz SQL sa vykoná mysql_query ($ strSQL) alebo die (mysql_error ()); // Ukončite spojenie mysql_close (); ?>

Databáza bola aktualizovaná!

Ukladanie vstupu používateľa do databázy

Pravdepodobne ste si už uvedomili, že na to môžete vytvoriť formulár, ako v lekcii 11, a hodnoty z formulára je možné vložiť do príkazu SQL. Povedzme, že máte jednoduchý formulár:

Tento formulár sa odošle do súboru insert.php kde, ako je uvedené v lekcii 11, môžete získať vstup od používateľa vyžiadaním obsahu formulára. V tomto konkrétnom prípade môže príkaz SQL vyzerať takto:

strSQL = "INSERT INTO people (FirstName) values ​​(" ". $ _POST [" FirstName "]." ")"

Podobne môžete požiadať o údaje pre súbory cookie, relácie, reťazce dotazov atď.

Najčastejšie chyby začiatočníkov

Najprv sa vám pri pokuse o aktualizáciu databázy pravdepodobne zobrazí veľa chybových hlásení. Pri práci s databázou nie sú úplne povolené žiadne chyby. Nesprávne umiestnená čiarka môže znamenať, že databáza sa neaktualizuje a zobrazí sa chybové hlásenie. Nasleduje popis najčastejších chýb.

Neplatný typ údajov

Je dôležité, aby sa údaje a typ údajov stĺpca zhodovali. Každý stĺpec môže obsahovať údaje určitého typu. Nasledujúca snímka obrazovky ukazuje dátové typy tabuľky „ľudia“ z nášho príkladu.

Chyba sa hodí, ak sa napríklad pokúsite vložiť text alebo číslo do dátového poľa. Nastavte preto typ údajov čo najpresnejšie.

Najbežnejšie typy údajov sú uvedené nižšie:

Význam Dátový typ Veľkosť
CHR
Text alebo kombinácia textu a čísel. Môže sa použiť aj na čísla, ktoré sa nepoužívajú pri výpočtoch (napr. Telefónne čísla). Až 255 znakov - buď dĺžka uvedená v časti „Dĺžka“
TEXT
Veľké bloky textu alebo kombinácia textu a čísel. Až 65 535 znakov
INT
Číselné údaje pre matematické výpočty. 4 bajty
DÁTUM
Dátumy vo formáte RRRR-MM-DD 3 bajty
ČAS
Čas vo formáte hh: mm: ss 3 bajty
DÁTUM ČAS
Dátum a čas vo formáte RRRR-MM-DD hh: mm: ss 8 bajtov

Príkazy SQL s úvodzovkami alebo spätnými lomkami

Ak sa pokúsite vložiť text obsahujúci znaky jednoduchej úvodzovky ("), dvojitej úvodzovky (") alebo spätné lomítko (\), záznam nebude vložený do databázy. Riešením je nahradiť spätné lomky pred znakmi, ktoré by sa mali pri vložení do databázových dotazov mnemotechnicky spracovať.

Posledná aktualizácia: 1.11.2015

Na vloženie údajov sa používa výraz „VLOŽIŤ“:

$ query = "VLOŽIŤ DO HODNOTY tovarov (NULL," Samsung Galaxy III"," Samsumg ")";

Výraz INSERT vloží do tabuľky jeden riadok. Po kľúčové slovo INTO je názov tabuľky a po HODNOTÁCH je v závorkách uvedený súbor hodnôt pre všetky stĺpce. Keďže v tabuľke máme tri stĺpce, uvádzame tri hodnoty.

Pretože v predchádzajúcej téme sme pri vytváraní tabuľky uviedli nasledujúce poradie stĺpcov: id, názov, spoločnosť, v tomto prípade je hodnota NULL odovzdaná pre stĺpec id, pre názov - " Samsung Galaxy III “a pre spoločnosť -„ Samsumg “.

Pretože stĺpec id je definovaný ako AUTO_INCREMENT, nepotrebujeme preň špecifikovať konkrétnu číselnú hodnotu a môžeme prejsť nulová hodnota a MySQL stĺpcu priradí ďalšiu dostupnú hodnotu.

Teraz sa pozrime na pridávanie údajov na príklade. Vytvorme súbor create.php s nasledujúcim obsahom:

Údaje boli pridané";) // zatvorte spojenie mysqli_close ($ link);)?>

Pridajte nový model

Zadajte model:

Výrobca:

Tu je kód pre interakciu s databázou kombinovaný s funkčnosťou formulárov: pomocou formulára zadávame údaje, ktoré sa majú pridať do databázy.

Zabezpečenie a MySQL

Tu sme použili funkciu mysqli_real_escape_string (). Slúži na únik znakov v reťazci, ktorý sa potom použije v dotaze SQL. Ako parameter vyžaduje objekt pripojenia a reťazec, ktoré je potrebné uniknúť.

V skutočnosti teda používame unikanie znakov dvakrát: najskôr pre výraz sql pomocou funkcie mysqli_real_escape_string () a potom pre html pomocou funkcie htmlentities (). To nám umožní chrániť sa pred dvoma druhmi útokov naraz: útokmi XSS a injekciou SQL.

A dané
... A teraz si povieme ako pridajte obrázky do databázy MySQL prostredníctvom formulára pomocou PHP.

Vytvorenie poľa v databáze MySQL na pridanie obrázku

Najprv to chcem povedať za ukladanie obrázkov do databázy Údaje MySQL je potrebné definovať jedno z polí tabuľky odvodené od typu BLOB.

BLOB znamená Blob. Typ úložiska BLOB má niekoľko možností:

  • TINYBLOB - môže uložiť až 255 bajtov
  • BLOB môže uložiť až 64 kilobajtov informácií
  • MEDIUMBLOB - až 16 megabajtov
  • LONGBLOB až 4 gigabajty

Pre uloženie súboru s obrázkom do databázy musíte načítať súbor do premennej a vytvoriť požiadavku na pridanie údajov do tabuľky.

Príprava formulára na stránke na pridanie obrázku do databázy MySQL

V mojom prípade to bola úloha pridajte dva obrázky na základňu prostredníctvom formulára pomocou PHP... Máme formulár s dvoma poliami a tlačidlom na odoslanie:

form name = "form1 ″ method =" post "action =" add_image.php "
enctype = "multipart / form-data"

Pripomeniem, že atribút akcie určuje súbor, ktorý načíta obrazové súbory. Pripisovať enctype označuje spôsob kódovania obsahu formulára a informácií o odosielaní súborov. Pozrite sa, ako atribút správne vyplniť enctype vyhnúť sa .

Poznámka: podpora nahrávania viacerých súborov bola zavedená vo verzii 3.0.10.

Zápis kódu PHP na uloženie obrázku do databázy MySQL

Pretože v atribúte odosielame dva súbory názov za slovom označujeme „užívateľský súbor“ pomocou hranaté zátvorky, týmto dávame najavo, že odosielame viac súborov pomocou poľa, ktoré obsahuje atribúty súborov:

$ _FILES ['užívateľský súbor'] ['meno']

Pôvodný názov súboru na klientskom počítači.

$ _FILES ['užívateľský súbor'] ['typ']

mime typu súboru, ak prehliadač poskytol tieto informácie.
Príklad: „obrázok / gif“.

$ _FILES ['užívateľský súbor'] ['veľkosť']

$ _FILES ['užívateľský súbor'] ['tmp_name']

Dočasný názov súboru, pod ktorým bol odovzdaný súbor uložený na serveri.

Ako získam hodnoty každého súboru?

Predpokladajme napríklad, že ste odoslali súbory s názvom /home/test/1.jpg a /home/test/2.jpg.

V tomto prípade $ _FILES ['užívateľský súbor'] ['meno']
bude obsahovať hodnotu 1.jpg,
a $ _FILES ['užívateľský súbor'] ['meno']
- hodnota 2.jpg

Rovnako $ _FILES ['užívateľský súbor'] ['veľkosť'] bude obsahovať hodnotu veľkosti súboru 1.jpg atď. Teraz sa pozrime na kód súboru add_image.php, ktorý bol zadaný v atribúte formulára akcie.

1024 * 1024 || $ image_size == 0) ($ ErrorDescription = "Každý obrázok by nemal presiahnuť 1 MB! Obrázok nemožno pridať do databázy."; Vrátiť "";) // Ak súbor dorazil, skontrolujeme grafika // to (z bezpečnostných dôvodov) if (substr ($ _ FILES ["userfile"] ["type"] [$ num], 0, 5) == "image") (// Prečítajte si obsah file $ image = file_get_contents ($ _ FILES ["userfile"] ["tmp_name"] [$ num]); // Uniknutie špeciálnych znakov v obsahu súboru $ image = mysql_escape_string ($ image); vrátiť $ image;) else ( ErrorDescription = "Neodoslali ste obrázok, takže ho nemožno pridať."; Vrátiť "";)) else ($ ErrorDescription = "Neodoslali ste obrázok, pole je prázdne, takže súbor nemožno pridať do databáza. "; vrátiť;) vrátiť $ image; )?>

V tomto článku sme teda hovorili o tom, ako uložiť obrázok do databázy MySQL , pomocou PHP.

V tejto príručke sa naučíte, ako začať spravovať svoju databázu zo svojho PHP skript. Budeš študovať pridanie záznamu do tabuľky MySQL, použitím PHP kód... Skôr ako začnete, pozrite sa na naše ďalšie návody, ktoré pokrývajú základné kroky práce s PHP a databázami - pripojenie z PHP k databáze MySQL.

Pred spustením skontrolujte nasledujúce položky:

  • Prístup k ovládaciemu panelu hostiteľa

Krok 1 - vytvorenie tabuľky

V prvom rade musíme vytvoriť tabuľku pre vaše údaje. Jedná sa o veľmi jednoduchý postup, ktorý môžete vykonať phpMyAdmin z hostiteľského ovládacieho panela. Procesu vytvorenia databázy MySQL sme sa už venovali v predchádzajúcom návode, takže tento bod tu preskočíme.

Po vstupe na stránku phpMyAdmin sa vám zobrazí podobný obrázok:

Vytvorme tabuľku s názvom Študenti pre našu databázu u266072517_name... Novú tabuľku môžete vytvoriť kliknutím na tlačidlo Vytvoriť tabuľku... Potom uvidíš nová stránka kde môžete zadať všetky požadované údaje pre svoju tabuľku:

Toto je najľahší spôsob, ako vytvoriť tabuľku, ďalšie informácie o štruktúre tabuľky / databázy a o tom, aké nastavenia je možné použiť pre každé pole, nájdete v oficiálnej dokumentácii phpMyAdmin.

Tu je niekoľko jednoduchých vysvetlení polí, ktoré budeme používať:

  • názov Je názov vášho poľa. Zobrazí sa v hornej časti tabuľky.
  • Napíšte- tu môžete nastaviť typ poľa. Napríklad si vyberáme varchar pretože tu potrebujeme zadať reťazec s názvom (ktorý obsahuje písmená, nie čísla).
  • Dĺžka / hodnoty- slúži na nastavenie maximálnej dĺžky vášho záznamu v tomto poli.
  • Register- v poli „ID“ používame index „primárny“. Pri vytváraní tabuľky sa odporúča mať jedno pole ID. Slúži na indexovanie záznamov v tabuľke pri nastavovaní vzťahov medzi tabuľkami. Tu je tiež možné poznamenať "A_I"čo znamená Automatický prírastok... Toto nastavenie automaticky zvýši index (1,2,3,4…).

Kliknite na Uložiť a váš stôl bude vytvorený.

Krok 2 - Generovanie kódu PHP a pridanie záznamu do tabuľky MySQL

Možnosť 1 - Metóda MySQLi

V prvom rade je potrebné vytvoriť pripojenie k databáze podľa nášho predchádzajúceho tutoriálu. Potom môžeme pokračovať v dotaze SQL na pridanie záznamu do tabuľky MySQL - VLOŽIŤ... Tu je kompletný príklad kódu s metódou prepojenia a vloženia:

". mysqli_error ($ conn);) mysqli_close ($ conn);?>

Prvá časť kódu (riadky 3 – 18 ) pozrite sa na časť vytvárania pripojenia k databáze. Túto časť už nebudeme opakovať, ak chcete vedieť, čo znamenajú jednotlivé riadky, pozrite si náš predchádzajúci návod, ako sa pripojiť k databáze.

Začnime s riadkom 19 :

$ sql = "Vložiť do študentov (meno, priezvisko, e -mail) HODNOTY (" Thom "," Vial "," [chránené e -mailom]")";

Toto je najdôležitejší riadok kódu a robí všetko, čo popisujeme v tomto návode - pridanie záznamu do tabuľky MySQL v databáze. VLOŽIŤ DO Je výraz, ktorý pridáva záznam do zadanej databázovej tabuľky MySQL. V našom prípade do tabuľky pridáme údaje Študenti.

Ďalej v zátvorkách definujeme polia tabuľky, hodnoty, ku ktorým pridáme: (meno, priezvisko, email)... Údaje budú doplnené v konkrétnom poradí. Ak píšeme (email, priezvisko, meno), hodnoty budú pridané v inom poradí.

Ďalšia časť významu HODNOTY... Tu nastavíme naše hodnoty na predtým určené polia. Každé pole teda získa svoju vlastnú hodnotu. V našom prípade to bude napríklad niečo také: meno = Thom, priezvisko = Fialka, email = [chránené e -mailom] .

Je dôležité poznamenať, že tu tvoríme Dotaz SQL pomocou kódu PHP. Dotazy SQL musia byť uzavreté v úvodzovkách. V našom prípade je všetko medzi úvodzovkami a nasledujúcimi $ sql = dotazom SQL.

Ďalšia časť kódu ( 20 – 22 lines) spustí našu požiadavku a skontroluje, či bola žiadosť úspešná:

If (mysqli_query ($ conn, $ sql)) (echo „Nový záznam bol úspešne vytvorený“;)

Ak bola požiadavka správne spustená, zobrazí sa správa o úspechu.

A posledná časť ( 22 – 24 riadky) zobraziť ďalšiu správu v prípade, že naša požiadavka zlyhá:

Inak (echo „Chyba:“. $ Sql. “
". mysqli_error ($ conn);)

Tento kód nám zobrazí chybové hlásenie pre prípad, že sa niečo pokazí.

Možnosť 2 - Metóda údajových objektov PHP (P HP D ata O bject)

Rovnako ako v predchádzajúcom príklade, musíme najskôr vytvoriť databázové pripojenie, ktoré sa vytvorí pri vytváraní nového PDO - predchádzajúci tutoriál vysvetľuje, ako sa to deje. Pretože je pripojenie k databáze MySQL objektom PDO, musíme na prípravu a spustenie dotazu použiť rôzne „metódy“ PDO (funkcie, ktoré sú súčasťou konkrétneho objektu). Objektové metódy sa nazývajú takto:

$ the_Object-> the_Method ();

PDO vám umožňuje „pripraviť“ kód SQL pred jeho spustením. Dotaz SQL sa pred spustením vyhodnotí a upraví. Jednoduchý útok s vložením SQL je teda možné vykonať vyplnením kódu SQL do poľa formulára. Napríklad:

// Užívateľ to napíše do poľa používateľského mena prihlasovacieho formulára thom "; DROP DATABASE user_table; // Konečný dotaz sa stane týmto" SELECT * FROM user_table WHERE username = thom "; DROP DATABASE user_table;

Pretože je kód SQL syntakticky správny, bodkočiarka pochádza z DROP DATABASE user_table nový dotaz SQL a tabuľka používateľov sa odstráni. Pripravené výrazy nepovoľujú znaky a ; na doplnenie pôvodnej žiadosti a vyhlásenia DROP DATABÁZE nikdy nebude popravený.

Je vždy pri odosielaní alebo prijímaní údajov z databázy s PDO používajte pripravené príkazy.

Ak chcete použiť pripravené výrazy, musíte vytvoriť novú premennú, ktorá zavolá metódu pripraviť () na databázový objekt.

V správnom formáte kód vyzerá takto:

$ servername = "mysql.hostinger.com"; $ database = "u266072517_name"; $ username = "u266072517_user"; $ heslo = "buystuffpwd"; $ sql = "mysql: host = $ servername; dbname = $ database;"; $ dsn_Options =; // Vytvorte nové pripojenie k databáze MySQL pomocou PDO, $ my_Db_Connection je pokus o objekt ($ my_Db_Connection = nové PDO ($ sql, $ užívateľské meno, $ heslo, $ dsn_Options); echo „Pripojené úspešne“;) catch (PDOException $ chyba) (echo "Chyba pripojenia:". $ error-> getMessage ();) // Nastavte premenné pre osobu, ktorú chceme pridať do databázy $ first_Name = "Thom"; $ last_Name = "Fialka"; $ email = " [chránené e -mailom]"; // Tu vytvoríme premennú, ktorá volá metódu prepar () databázového objektu // Ako parameter sa zadá dotaz SQL, ktorý chcete spustiť, a zástupné symboly sa zapisujú takto: zástupný_názov $ $ my_Insert_Statement = $ my_Db_Connection-> pripraviť ("VLOŽIŤ DO študentov (meno, priezvisko, e -mail) HODNOTY (: prvé_názov ,: priezvisko,: e -mail)");) // Teraz skriptu oznámime, na ktorú premennú sa každý zástupný symbol v skutočnosti odvoláva pomocou metódy bindParam () // Prvá parameter je zástupný symbol vo vyššie uvedenom výkaze-druhý parameter je premenná, ktorá by mala odkazovať na $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: email, $ email); // Vykonajte dotaz pomocou údajov, ktoré sme práve definovali // Metóda execute () vráti hodnotu TRUE, ak je úspešná, a FALSE, ak nie je, čo vám umožní napísať sem svoje vlastné správy, ak ( $ my_Insert_Statement-> execute ()) (ozvena „Nový záznam bol úspešne vytvorený“;) el se (echo „Nedá sa vytvoriť záznam“; ) // V tomto mieste môžete zmeniť údaje premenných a spustiť znova, aby ste do databázy pridali ďalšie údaje $ first_Name = "John"; $ last_Name = "Smith"; $ email = " [chránené e -mailom]"; $ my_Insert_Statement-> execute (); // Spustite znova, keď sa premenné zmenili, ak ($ ​​my_Insert_Statement-> execute ()) (echo" Nový záznam bol úspešne vytvorený ";) else (echo" Nedá sa vytvoriť záznam "; )

Na riadkoch 28, 29 a 30 používame metódu bindParam () databázový objekt. Existuje aj metóda bindValue () odlišný od predchádzajúceho.

  • bindParam () - táto metóda počíta údaje, keď metóda spustiť () dosiahnuté. Prvýkrát, keď skript dosiahne metódu spustiť () on to vidí $ first_Name odkazuje na „Thom“, viaže túto hodnotu a vykoná požiadavku. Keď sa skript dostane k metóde druhýkrát spustiť (), vyzerá to tak $ first_Name teraz odkazuje na „John“, viaže túto hodnotu a znova spustí dotaz s novou hodnotou. Je dôležité pochopiť, že požiadavku vytvoríme raz a potom nahradíme rôzne údaje na rôznych miestach skriptu.
  • bindValue () - táto metóda vyhodnocuje údaje hneď, ako ich front dosiahne. Od hodnoty $ first_Name keď sme dosiahli metódu, bola nastavená na „Thom“ bindValue (), bude použitý pri volaní metódy spustiť () pre $ my_Insert_Statement.

Upozorňujeme, že premennú znova používame $ first_Name a dať mu novú hodnotu druhýkrát. Ak po spustení tohto skriptu skontrolujete svoju databázu, budú tam uvedené obe mená, na rozdiel od hodnoty premennej $ first_Name sa bude na konci tohto skriptu rovnať „John“. Nezabudnite, že PHP vyhodnotí obsah skriptu pred jeho spustením.

Ak zmeníte skript nahradením bindParam na bindValue, dvakrát pridáte „Thom Vial“ do databázy MySQL do databázy a John Smith bude ignorovaný.

Krok 3 - Kontrola úspešnosti implementácie a riešenie všeobecných otázok

Ak je dotaz, ktorý sme spustili v databáze MySQL, úspešný, zobrazí sa nasledujúca správa:

Riešenie bežných chýb

MySQLi

V každom inom prípade sa namiesto vyššie uvedenej správy zobrazí chybové hlásenie. Urobme napríklad jednu chybu syntaxe v našom kóde a dostaneme toto:

Ako vidíme, prvá časť kódu je v poriadku, pripojenie bolo úspešne nadviazané, ale pri vykonávaní nášho dotazu SQL došlo k zlyhaniu.

"Chyba: VLOŽIŤ DO študenti (meno, priezvisko, e -mail) HODNOTY (" Thom "," Vial "," [chránené e -mailom]") Máte chybu v syntaxi SQL; v príručke zodpovedajúcej verzii servera MySQL nájdete správnu syntax, ktorá sa má používať v blízkosti HODNOTY" (meno, priezvisko, e -mail) ("Thom", "Vial", " [chránené e -mailom]")" na riadku 1 "

Vyskytla sa chyba syntaxe, ktorá spôsobuje, že náš skript zlyhal. Chyba bola tu:

$ sql = "Vložiť do študentov (meno, priezvisko, e -mail) HODNOTY (" Thom "," Vial "," [chránené e -mailom]")";

Ako vidíte, používame rovnátka namiesto okrúhleho. Toto je nesprávne a má za následok chybu syntaxe v našom skripte.

PDO

Na riadku 7 pripojenia PDO je režim spracovania chýb nastavený na „zobraziť všetky výnimky“. Ak to zo skriptu odstránite a žiadosť zlyhá, nezobrazí sa žiadne chybové hlásenie. Ak sú povolené výnimky, zobrazia sa konkrétne problémy, s ktorými sa stretnete. Vo všeobecnosti sa to najlepšie používa pri vývoji skriptu, pretože môže odhaliť názvy databáz a tabuliek, ktoré by ste chceli skryť pred niekým iným, kto by mohol mať nepovolený prístup k vašim údajom. Vo vyššie uvedenom prípade, keď sa namiesto zátvoriek použili zložené zátvorky, chyba vyzerá takto:

Závažná chyba: Nezachytená výnimka „PDOException“ so správou „SQLSTATE: Chyba syntaxe alebo porušenie prístupu: 1064 Máte chybu v syntaxi SQL; v príručke zodpovedajúcej verzii servera MySQL nájdete správnu syntax, ktorá sa má používať v blízkosti HODNOTY „(meno, priezvisko, e -mail) („ Thom “,„ Vial “,„ [chránené e -mailom]")" na riadku 1 "

Ďalšie problémy, s ktorými sa môžete stretnúť:

  • Polia sú nesprávne zadané (neexistujúce polia alebo chyby v hláskovaní mien).
  • Nesúlad typu hodnoty s typom poľa. Napríklad, keď chceme číslu priradiť hodnotu 47 lúka názov, zobrazí sa chyba, pretože sa predpokladá, že hodnota je reťazec. Ale, ak napríklad uvediete číslo v úvodzovkách “47” , nedôjde k žiadnej chybe, pretože naše číslo bude do tohto poľa zapísané ako reťazec.
  • Bol vykonaný pokus o zadanie údajov do tabuľky, ktorá neexistuje, alebo došlo k chybe v hláskovaní názvu tabuľky.

Všetky tieto chyby je možné opraviť podľa pokynov na opravu chýb alebo kontrolou denníka chýb.

Po úspešnom pridaní údajov by sme ich mali vidieť v našej databáze. Tu je príklad tabuľky, do ktorej sme pridali naše údaje tak, ako sú zobrazené v phpMyAdmin.

Záver

V tomto návode ste sa naučili používať PHP kód na pridanie záznamu do tabuľky MySQL použitím MySQLi a PDO... Pozreli sme sa aj na prípady bežných chýb a ich riešenia. Vedieť, ako používať kód PHP na pridanie MySQL do databázy, vám príde vhod, či sa učíte programovať alebo si už vytvárate vlastnú webovú stránku.