Zadávanie údajov do mysql cez php. Zápis údajov do MySQL - tak, aby znela pieseň kódu. Pridávanie záznamov pomocou phpMyAdmin

  • 20.06.2020

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

Vkladanie údajov pomocou SQL

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

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

Ako vidíte, v jednom príkaze SQL môžete aktualizovať viacero stĺpcov tak, že ich zadáte do zoznamu oddeleného čiarkami. Ale samozrejme môžete zadať aj len jeden stĺpec a jednu hodnotu. Stĺpce, ktoré nie sú uvedené v danom príkaze SQL, zostanú prázdne.

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

V tomto príklade 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 = "INSERT INTO people(Meno,Priezvisko,Telefón,Dátum narodenia) VALUES("Gus","Hus","99887766 ","1964-04-20")";

Ako vidíte, príkazy SQL môžu byť dosť dlhé a je ľahké stratiť prehľad. Preto je lepšie napísať príkaz SQL trochu inak:

strSQL = "INSERT INTO people("; strSQL = strSQL. "Krstné meno"; strSQL = strSQL. "Priezvisko" strSQL = strSQL. "telefón"; strSQL = strSQL. "narodenie)"; strSQL = strSQL . "VALUES("; strSQL = strSQL . ""Gus", "; strSQL = strSQL. ""Hus", "; strSQL = strSQL. ""99887766", "; strSQL = strSQL. ""1964-04-20")"; mysql_query($strSQL) or die(mysql_error());

Tu je príkaz SQL zostavený rozdelením vety na malé časti a ich spojením do premennej $strSQL.

V praxi nie je rozdiel v aplikácii jedného alebo druhého, no pri práci s veľkými stolmi sa schopnosť „držať stopu“ stáva mimoriadne dôležitou, preto si zvoľte najvhodnejšiu metódu.

Pokúsme sa spustiť nasledujúci kód na vloženie Gus Goose do databázy:

Vkladanie údajov do databázy // Pripojte sa k databázovému serveru mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());// Výber databázy mysql_select_db("mydatabase") or die(mysql_error()); // Vytvorenie príkazu SQL $strSQL = "INSERT INTO people("; $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")"; // SQL príkaz sa vykoná mysql_query($strSQL) or die(mysql_error()); // Ukončenie spojenia mysql_close(); ?>

DB aktualizované!



Uloženie používateľského vstupu do DB

Pravdepodobne ste už prišli na to, ž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 vložiť.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 byť príkaz SQL:

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

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

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

Najprv sa pri pokuse o aktualizáciu databázy pravdepodobne zobrazí veľa chybových hlásení. Pri práci s databázou nie sú absolútne neprijateľné žiadne chyby. Nesprávne umiestnená čiarka môže znamenať, že databáza sa neaktualizuje a zobrazí sa chybové hlásenie. Nižšie uvádzame najčastejšie chyby.

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 zobrazuje typy údajov tabuľky „ľudí“ z nášho príkladu.

Ak sa napríklad pokúsite vložiť text alebo číslo do dátového poľa, dôjde k chybe. Dátový typ preto nastavte čo najpresnejšie.

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

Význam Dátový typ Veľkosť
CHR
Text alebo kombinácia textu a čísel. Dá sa použiť aj pre čísla, ktoré sa nepoužívajú pri výpočtoch (napr. telefónne čísla). Až 255 znakov – buď dĺžka uvedená v "Dĺžke"
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

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

Ak sa pokúsite vložiť text, ktorý obsahuje jednoduché úvodzovky ("), dvojité úvodzovky (") alebo znaky spätnej lomky (\), záznam sa do databázy nevloží. Riešením je nahradiť spätné lomky pred znakmi, ktoré by mali byť mnemonizované pri vkladaní do databázových dotazov.

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

Tvoje meno:
Tvoj email:


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

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


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

$name = $_POST["meno"]; $email = $_POST["e-mail"];


Keď sú premenné pripravené na zadanie do databázy, vytvoríme dotaz. Ale najprv 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:

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


V tomto kóde sme naznačili, že do buniek mena a e-mailu, ktoré sú v tabuľke používateľov, sa pridajú nasledujúce premenné: $meno a $email .
Ďalej, ak všetko prebehlo v poriadku, dostaneme správu od stavu:

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


Ak sa vyskytli nejaké problémy a údaje neboli zadané, dostaneme 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 hotový skript (napísaný vyššie), teraz len pridáme pole Tvoje mesto, premennú nazvime: $mesto . A tak vo formulári na zadanie údajov po:

Tvoj email:


pridať:

Tvoje mesto:


V php skripte po:

$email = $_POST["e-mail"];


pridať:

$mesto = $_POST["mesto"];


A samozrejme to pridávame aj do žiadosti takto:

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


Tu je to, čo by mal byť konečný výsledok:
Vstupný formulár:

Tvoje meno:
Tvoj email:
Tvoje mesto:


skript:

$name = $_POST["meno"]; $email = $_POST["e-mail"]; $mesto = $_POST["mesto"]; $result = mysqli_query("INSERT INTO user (meno, email, mesto) VALUES ("$name", "$email", "$mesto")"); 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šetky moduly stránky alebo webovej aplikácie, kde je potrebné zadať a zaznamenať nejaké údaje (napríklad meno, vek, adresu atď.), používajú jednoduchú mysql funkciu INSERT INTO `name_base` (meno,hodnota1,hodnota2) VALUES ( 'Vasya','1','2');

Všetky premenné sa zadávajú do databázy podľa hodnôt, ktoré sme nastavili v prvých zátvorkách. Je dôležité zvážiť kódovanie skriptu obsluhy, databázy a konfiguračného súboru. Je vhodné použiť najbežnejšie kódovanie UTF-8.

Majte na pamäti, že existujú dva spôsoby zápisu do databázy.

Prvý spôsob ak spočiatku nenastavíme názvy buniek databázových tabuliek. Potom musíme vypísať všetky premenné pre každú bunku, konkrétne koľko buniek je v databázovej tabuľke, toľko premenných musí byť uvedených v zátvorkách za hodnotou VALUE.

Napríklad:
Databázová tabuľka má štyri bunky. To znamená, že za prvkom VALUE (..) musia byť všetky štyri premenné uvedené v zátvorkách. A ešte jedna vec: ak premenná neexistuje, povedzme, že ide o voliteľný parameter. Potom napíšeme prázdnu hodnotu do úvodzoviek '',

"INSERT INTO `name_base` VALUES (NULL, `.$name."`,``,`2`)"; // tretia prázdna hodnota je napísaná v úvodzovkách

Ale táto požiadavka má niekoľko menších nevýhod. Ak do databázovej tabuľky pridáte jednu alebo dve bunky, tento dotaz vráti chybu. Pretože pri tejto metóde je enumerácia všetkých buniek v dotaze povinná.

Druhý spôsob ak po dotaze INSERT INTO `name_base` (...) vypíšte všetky bunky za názvom databázy. Príklad už bol diskutovaný vyššie. Ak ste zabudli, napíšte ešte raz:

"INSERT INTO `name_base`(`name`,`value`,`value2`) VALUES (NULL, `.$name."`,``,`2`)";

Tu sú uvedené všetky bunky (názov, hodnota1, hodnota2) . A ak do databázovej tabuľky pridáte ďalšie dve bunky, syntax dotazu sa nebude musieť meniť. Ale ak nepotrebujeme pridať naraz v jednej žiadosti tie veľmi dodatočné premenné, ktoré potrebujeme pre tieto úplne novo vytvorené bunky.

Takáto chyba padá veľmi často, po malej zmene na stránke. Povedzme, že administrátor pridal do databázy ďalšiu bunku, povedzme stav. Obsluha skriptov však nemala čas zmeniť modul alebo jednoducho zabudol. Niektoré stránky však majú veľmi zložitú štruktúru a nájdenie chyby môže trvať veľa času a úsilia. Preto je žiaduce použiť druhý spôsob zápisu do databázy. Aj keď tento druh chyby častejšie robia začínajúci weboví programátori.

php zápis do databázy mysql. Praktické príklady

Tak a teraz sme sa dostali k jadru veci pri práci s databázovými dotazmi. Všetko urobíme na praktických príkladoch. Vytvorme si jednoduchý skript na zaznamenávanie komentárov, ktoré návštevníci stránky opustia.

Najprv si v databáze vytvoríme tabuľku msg so štyrmi bunkami. Do prvej bunky napíšeme id komentára. Počet znakov v bunke je až desať znakov s parametrom auto-increment. Toto automatické nastavenie sa zmení vždy, keď k +1 pridáte komentár.

Názov nasledujúcej bunky je používateľské meno. Počet znakov - až dvesto - tristo znakov podľa vlastného výberu, parameter char. Potom bunka komentára - do tejto bunky zapíšeme samotný text komentára. Ak chcete zaznamenať veľké texty komentárov, môžete nastaviť parameter text - potom môžete jednoducho zadať obrovské texty, viac ako päťstotisíc znakov alebo nastaviť parameter tinytext, potom sa zmestí trochu menej znakov, ale bude to fungovať trochu rýchlejšie.

Ale v našom prípade budeme mať na pamäti, že návštevníci nebudú písať obrovské texty. A preto sa obmedzíme a opravíme dvetisíc znakov s parametrom varchar, na zapisovanie reťazcových hodnôt.

Do poslednej bunky napíšeme dátum zadania textu komentára. Budeme písať v číselnom formáte v sekundách pomocou funkcie aktuálneho dátumu a času time(); Pre jednoduchosť nastavíme funkciu na premennú $time=time(); A vytvorte bunku v databáze. Pomenujme rovnaký názov čas s parametrom int (pre číselné hodnoty). Zapíšme si počet znakov – lepšie je jedenásť (s malou rezervou do budúcnosti :-).

Výpis databázy je nasledovný:

Štruktúra tabuľky `msg` -- CREATE TABLE IF NOT EXISTS `msg` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` char(250) NOT NULL, `coment` varchar(2000) NOT NULL, `time` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Všetko, bola vytvorená tabuľka pre komentáre. Teraz napíšeme formulár, aby sme mohli napísať komentár a samotný skript handlera. HTML kód pre formulár komentára je nasledujúci.

Od autora: oh, nemôžete vyhodiť slová z piesne! Môžu ich však vymazať, aktualizovať alebo vložiť iní. Hlavná vec je, že slová sú vložené do databázy. Dnes vám povieme, ako sa zapisujú dáta do MySQL a ako to urobiť správne, aby pesnička znela!

Pridávanie záznamov pomocou phpMyAdmin

Shell phpMyAdmin na správu MySQL DBMS implementuje „odľahčenú“ funkcionalitu na pridávanie nových záznamov do databázových tabuliek. Pre svoju jednoduchosť je ideálny ako pre zelených „atrapy“, tak aj pre „lenivých“ profesionálov.

Ak chcete do tabuľky zadať nové informácie, mali by ste vstúpiť do programu s právami správcu. Potom v zoznamoch vľavo vyberte požadovanú databázu a tabuľku. Potom v hornom menu prejdite cez položku "Vložiť".

Potom, aby ste urobili záznam v databáze MySQL, vyplňte ďalšie okno pre všetky stĺpce poľa "Hodnota" a kliknite na tlačidlo "OK" v dolnej časti.

Snímka obrazovky vyššie ukazuje, že upravená tabuľka „Zvieratá“ pozostáva z dvoch stĺpcov (polí): id a name. Druhá časť špecifikuje typ každého zo stĺpcov. Potrebujeme zadať iba hodnotu do poľa názvu, pretože stĺpec id je primárny kľúč a pri vytváraní tabuľky bol nastavený na automatické zvyšovanie. To znamená, že hodnotu poľa id vygeneruje automaticky MySQL, pričom sa k predchádzajúcej celočíselnej hodnote pridá 1.

Ak chcete zistiť, ktoré pole dátových záznamov v MySQL je primárny kľúč (primárny kľúč), v phpMyAdmin prejdite do menu (s vybranou tabuľkou vľavo v zozname) na hornú záložku menu "Štruktúra". Tu je popis všetkých polí tabuľky, ich typ a ďalšie charakteristiky.

Vkladanie údajov pomocou SQL dotazov

Ale phpMyAdmin je len obal a skutoční správcovia "hovoria" so serverom MySQL pomocou štruktúrovaného dotazovacieho jazyka. To znamená, že sa s ním „rozprávajú“ v jazyku SQL. Keďže sa snažíme stať skutočnými profesionálmi, v rámci preberanej témy sa trochu „ponoríme“ do štúdia SQL príkazov. Tu je dotaz, zadaním ktorého do poľa „SQL“ vytvoríte rovnakú databázu:

CREATE TABLE Animal (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));

CREATE TABLE Zviera (ID MEDIUMINT NOT NULL AUTO_INCREMENT ,

meno CHAR (30) NOT NULL, PRIMARY KEY (id));

Po vytvorení tabuľky a zápise údajov do databázy MySQL (cez záložku „Vložiť“) vám program oznámi, že k zvieratám pribudol riadok s hodnotou identifikátora 1. A o niečo nižšie v okne editora zobrazí sa kód dotazu, ktorý nám shell vygeneroval a odoslal na databázový server.

Vyžiadať kód:

INSERT INTO `my_db1`.`animal` (`id`, `name`) VALUES (NULL, "Mačka");

INSERT INTO ` my_db1 ` . ` zviera ` (` id ` , ` meno ` ) HODNOTY (NULL, "Mačka" );

Poďme si to naštudovať podrobnejšie. SQL používa príkaz INSERT na vloženie nového riadku do tabuľky. Informuje server, že do databázovej tabuľky (my_db1 . animal) musíte vložiť zadané hodnoty do polí id a name (VALUES (NULL, 'Cat').

Upozorňujeme, že pre stĺpec id neuvádzame číselnú hodnotu, ale NULL, keďže sme pre toto pole „povolili“ automatické dopĺňanie (automatické zvyšovanie).

Ako vložiť príspevok pomocou PHP

Všetko, o čom sme uvažovali, je len „predohrou“ hlavnej akcie, v ktorej „Jeho výsosť“ vstupuje na scénu serverový programovací jazyk PHP. Práve vďaka nemu sa MySQL ako DBMS tak rozšírilo na webe.
Veľká časť World Wide Web je postavená na množstve týchto dvoch internetových technológií. Kamkoľvek sa pozriete, všade ich nájdete: v moderných CMS, „samom písaných“ motoroch a na serveri.

Nie je žiadnym prekvapením, že PHP poskytuje toľko vstavaných funkcií na zapisovanie údajov do MySQL. My sa však zameriame na najdôležitejšie z nich. Tu je kód, ktorý pridá nové „zviera“ do tabuľky zvierat. Ak sa budete veľmi snažiť, tak týmto spôsobom zoženiete celý zverinec :)

$con_str=mysql_connect("localhost", "root", "", "db1"); if(mysql_connect("localhost","root"))( echo "Ahoj!!"; ) mysql_select_db("db1",$con_str); $query_str="INSERT INTO `db1`.`zviera` (`id`, `name`) VALUES (NULL, "pes")"; mysql_query($query_str); mysql_close();

$ con_str = mysql_connect ("localhost" , "root" , "", "db1" );

if (mysql_connect("localhost" , "root" ) ) (

echo "Ahoj!!" ;

mysql_select_db("db1" , $ con_str ) ;

$query_str= "INSERT INTO `db1`.`animal` (`id`, `name`) VALUES (NULL, "dog")";

mysql_query($query_str) ;

mysql_close();

Tento kód je potrebné vložiť do súboru PHP a umiestniť ho na strane servera.

Pomocou funkcie mysql_connect() sa pripojíme k databázovému serveru MySQL. Ako argumenty funkcia berie hostiteľa, používateľské meno DBMS, heslo a názov databázy, ku ktorej sa má pripojiť. Máme prázdne heslo, pretože používame server nainštalovaný na lokálnom (klientskom) počítači.

Na demonštráciu všetkých popísaných príkladov zápisu do databázy MySQL pomocou PHP sme použili „gentleman's kit“ z Denveru. Zahŕňa lokálny server Apache, server MySQL, phpMyAdmin a niekoľko ďalších užitočných nástrojov na kódovanie a testovanie.

Potom sme v logickom bloku if skontrolovali pripojenie k databázovému serveru. Potom sme vo funkcii mysql_select_db () určili základňu, ku ktorej sa pripojíme. Pomocou funkcie mysql_query() sme spustili SQL dotaz zapísaný do premennej $query_str. A na konci bolo nadviazané spojenie uzavreté (funkcia mysql_close()). Ak sa teraz pozrieme do nášho zverinca (stolové zviera), nájdeme tam nového „domáceho miláčika“.

Aby to bolo napísané v MySQL, PHP „láskavo“ poskytlo všetky potrebné funkcie. Hlavná vec, na ktorej sa začiatočníci pri používaní SQL v programovom kóde „vypaľujú“, je nesprávne písanie dotazov, porušenie syntaxe a striedanie znakov na escapovanie (úvodzovky).

Aby ste sa vyhli tomu, že sa vám na hlave budú objavovať ďalšie „sivé“ vlasy, je lepšie skontrolovať správnosť pravopisu žiadosti pomocou phpMyAdmin. Ak to chcete urobiť, vložte kód SQL do editora programu a spustite ho na vykonanie. Ak niečo nie je v poriadku, aplikácia začne „nadávať“, zobrazí červenú správu a označí miesto chyby.

Ako vidíte, pomocou MySQL môžete „zbierať“ svoj zverinec a správne meniť slová akejkoľvek „piesne“. A na zápis do databázy MySQL je PHP perfektné, preto vám odporúčame, aby ste sa s týmto „skvelým“ programovacím jazykom „úzko“ spriatelili!

V tomto článku sa pozrieme na to, ako pomocou PHP vkladať riadky do databázy MySQL.

Krok 1 - Vytvorenie tabuľky

Najprv musíte vytvoriť tabuľku s údajmi. Toto je jednoduchý postup, ktorý je možné vykonať pomocou phpMyAdmin v ovládacom paneli vášho hostingu.

Po prihlásení do phpMyAdmin uvidíte rozhranie, ako je toto:
Vytvorme tabuľku s názvom Študenti v databáze u266072517_name kliknutím na tlačidlo „Vytvoriť tabuľku“. Potom sa nám zobrazí nová stránka, na ktorej nastavíme všetky potrebné parametre tabuľky:

Toto je najjednoduchšie nastavenie, ktoré možno použiť pre tabuľku a získať viac informácií o štruktúre tabuliek/databáz.

Možnosti stĺpcov:

  • Názov je názov stĺpca, ktorý sa zobrazuje v hornej časti tabuľky.
  • Typ je typ stĺpca. Napríklad sme zvolili varchar, pretože budeme zadávať reťazcové hodnoty.
  • Dĺžka/Hodnoty – používa sa na určenie maximálnej dĺžky, ktorú môže mať položka v tomto stĺpci.
  • Index – Pre pole „ID“ sme použili „Primárny“ index. Pri vytváraní tabuľky sa odporúča použiť iba jeden stĺpec ako primárny kľúč. Používa sa na zoznam záznamov v tabuľke a je potrebný pri nastavovaní tabuľky. Označil som aj "A_I", čo je skratka pre "Auto Increment" - možnosť automatického priradenia počtu záznamov (1,2,3,4...).
    Kliknite na tlačidlo Uložiť a tabuľka sa vytvorí.

Krok 2. Napísanie kódu PHP na vloženie údajov do MySQL.

Možnosť 1 – metóda MySQLi

Najprv musíte vytvoriť spojenie s databázou. Potom použijeme dotaz SQL INSERT. Príklad úplného kódu:

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

Prvá časť kódu (riadok 3 - 18) slúži na pripojenie k databáze.

Začnime riadkom #19:

$sql = "INSERT INTO Študenti (meno, priezvisko, email) VALUES ("Thom", "Vial", " [e-mail chránený]")";

Vkladá údaje do databázy MySQL. INSERT INTO je príkaz, ktorý pridáva údaje do zadanej tabuľky. V našom príklade sa údaje pridajú do tabuľky Študenti.

Ďalej nasleduje vymenovanie stĺpcov, do ktorých sa vkladajú hodnoty: meno, priezvisko, e-mail. Údaje budú doplnené v určenom poradí. Ak by sme napísali (e-mail, priezvisko, meno), hodnoty by boli pridané v inom poradí.

Ďalšou časťou je príkaz VALUES. Tu špecifikujeme hodnoty pre stĺpce: meno = Thom, priezvisko = liekovka, e-mail = [e-mail chránený]

Spustili sme dotaz pomocou kódu PHP. V kóde musia byť dotazy SQL ukončené úvodzovkami. Ďalšia časť kódu (riadok 20-22) kontroluje, či bola naša požiadavka úspešná:

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

Tento kód zobrazí správu, že požiadavka bola úspešná.

A posledná časť (riadok 22 - 24) zobrazí upozornenie, ak požiadavka nebola úspešná:

else ( echo "Chyba: " . $sql."
" .mysqli_error($conn); )

Možnosť 2 – PHP Data Object Method (PDO)

Najprv sa musíme pripojiť k databáze vytvorením nového objektu PDO. Pri práci s ním budeme využívať rôzne metódy CHOP. Objektové metódy sa nazývajú takto:

$the_Object->the_Method();

PDO vám umožňuje „pripraviť“ kód SQL pred jeho vykonaním. SQL dotaz sa pred spustením vyhodnotí a „opraví“. Napríklad najjednoduchší útok SQL injection je možné vykonať jednoduchým zadaním kódu SQL do poľa formulára. Napríklad:

Keďže ide o syntakticky správny SQL, bodkočiarka urobí z DROP DATABASE user_table nový SQL dotaz a užívateľská tabuľka sa zruší. Pripravené výrazy (viazané premenné) neumožňujú ukončiť pôvodný dotaz bodkočiarkami a úvodzovkami, preto príkaz DROP DATABASE nebude nikdy vykonaný.

Ak chcete použiť pripravené príkazy, musíte napísať novú premennú, ktorá volá metódu Prepare() databázového objektu.

Správny kód:

getMessage(); ) // Nastavte premenné pre osobu, ktorú chceme pridať do databázy $first_Name = "Thom"; $last_Name = "Vialka"; $email = " [e-mail chránený]"; // Vytvorte premennú, ktorá volá metódu Prepare() databázového objektu // Dotaz SQL, ktorý chcete vykonať, sa zadá ako parameter a zástupné symboly sa zapíšu takto: zástupný_názov $my_Insert_Statement = $my_Db_Connection->prepare( "INSERT INTO Students (meno, priezvisko, email) VALUES (:first_name, :priezvisko, :email)"); // Teraz povieme skriptu, na ktorú premennú odkazuje každý zástupný symbol, aby sme mohli použiť metódu bindParam() // prvý parameter je zástupný symbol vo vyššie uvedenom príkaze, druhý je premenná, ktorá by mala odkazovať na $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:priezvisko, $last_Name); $my_Insert_Statement->bindParam (:email, $email); // Spustite dotaz pomocou údajov, ktoré sme práve definovali // Metóda execute() vráti hodnotu TRUE, ak bola úspešná, a FALSE, ak nie, takže si môžete vytlačiť vlastnú správu, ak ($my_Insert_Statement ->execute()) ( echo "Nové reco rdvytvorené úspešne"; ) else ( echo "Nedá sa vytvoriť záznam"; ) // V tomto bode môžete zmeniť údaje premennej a spustiť dotaz na pridanie ďalších údajov do údajov databázy do databázy $first_Name = "John"; $priezvisko = "Smith"; $email = " [e-mail chránený]"; $my_Insert_Statement->execute(); // Spustí sa znova, keď sa premenná zmení if ($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žijeme metódu bindParam() databázového objektu. Existuje aj metóda bindValue(), ktorá je veľmi odlišná od predchádzajúcej.

  • bindParam() – Táto metóda vyhodnotí údaje, keď sa dosiahne metóda execute(). Keď skript prvýkrát dosiahne metódu execute(), zistí, že $first_Name sa zhoduje s "Thom". Potom naviaže túto hodnotu a spustí dotaz. Keď skript dosiahne druhú metódu execute(), vidí, že $first_Name sa teraz zhoduje s "John". Potom naviaže túto hodnotu a znova spustí dotaz s novými hodnotami. Je dôležité si zapamätať, že sme raz definovali dotaz a opätovne ho použili s rôznymi údajmi v rôznych bodoch skriptu.
  • bindValue() – Táto metóda vyhodnotí údaje hneď, ako sa dosiahne bindValue(). Pretože $first_Name bolo nastavené na "Thom", keď sa dosiahne bindValue(), použije sa zakaždým, keď sa zavolá metóda execute() na $my_Insert_Statement.
    Všimnite si, že znova používame premennú $first_Name a druhýkrát jej priraďujeme novú hodnotu. Po spustení skriptu budú obe mená uvedené v databáze napriek tomu, že premenná $first_Name na konci skriptu má hodnotu „John“. Pamätajte, že PHP pred spustením skontroluje celý skript.

Ak aktualizujete skript tak, aby nahradil bindParam s bindValue, vložíte "Thom Vial" dvakrát do databázy a John Smith bude ignorovaný.

Krok 3 – Potvrdenie úspechu a vyriešenie problémov

Ak bola požiadavka na vloženie riadkov do databázy úspešná, zobrazí sa nám nasledujúca správa:

Riešenie bežných chýb

MySQLi

V každom inom prípade sa zobrazí chybové hlásenie. Urobme napríklad jednu chybu syntaxe v kóde a dostaneme nasledovné:

Prvá časť kódu je v poriadku, pripojenie bolo úspešne nadviazané, ale SQL dotaz zlyhal.

"Chyba: INSERT INTO Students (meno, priezvisko, email) VALUES ("Thom", "Vial", " [e-mail chránený]") Máte chybu v syntaxi SQL; skontrolujte príručku, ktorá zodpovedá verzii vášho servera MySQL, kde nájdete správnu syntax v blízkosti "(meno, priezvisko, email) VALUES ("Thom", "Vial", " [e-mail chránený]")" v riadku 1"

Vyskytla sa chyba syntaxe, ktorá spôsobila zlyhanie skriptu. Chyba bola tu:

$sql = "INSERT INTO Študenti (meno, priezvisko, email) VALUES ("Thom", "Vial", " [e-mail chránený]")";

Použili sme kučeravé strojky namiesto normálnych strojčekov. Toto je nesprávne a skript vykázal chybu syntaxe.

CHOP

Na riadku 7 pripojenia PDO je chybový režim nastavený na "zobrazenie všetkých výnimiek". Ak by bola nastavená iná hodnota a požiadavka by zlyhala, nedostali by sme žiadne chybové hlásenia.

Toto nastavenie by sa malo používať iba pri vývoji skriptu. Ak je táto možnosť povolená, môžu sa zobrazovať názvy databáz a tabuliek, ktoré je z bezpečnostných dôvodov najlepšie ponechať skryté. Vo vyššie opísanom prípade, keď sa namiesto bežných zátvoriek použili zložené zátvorky, chybové hlásenie vyzerá takto:

Závažná chyba: Uncaughtexception "PDOException" so správou "SQLSTATE: Syntaktická chyba alebo porušenie prístupu: 1064 Máte chybu v syntaxi SQL; skontrolujte príručku, ktorá zodpovedá verzii vášho servera MySQL, kde nájdete správnu syntax, ktorá sa má použiť v blízkosti "(meno, priezvisko, email) VALUES ("Thom", "Vial", " [e-mail chránený]")" v riadku 1"

Ďalšie možné problémy:

  • Stĺpce sú nesprávne zadané (neexistujúce stĺpce alebo pravopisná chyba v ich názvoch).
  • Jeden typ hodnoty je priradený stĺpcu iného typu. Napríklad, ak sa pokúsite vložiť číslo 47 do stĺpca Názov, dostanete chybu. Tento stĺpec musí používať hodnotu reťazca. Ak by sme však zadali číslo v úvodzovkách (napríklad „47“), fungovalo by to, pretože ide o reťazec.
  • Uskutočnil sa pokus o zadanie údajov do tabuľky, ktorá neexistuje. Rovnako ako pravopisná chyba v názve tabuľky.

Po úspešnom zadaní údajov uvidíme, že boli pridané do databázy. Nižšie je uvedený príklad tabuľky, do ktorej boli pridané údaje.

Záver

V tomto článku sme sa zaoberali tým, ako používať PHP na vkladanie údajov do databázy MySQL pomocou MySQLi a PDO. A tiež ako opraviť bežné chyby. Tieto znalosti budú užitočné pri učení programovania a pri vývoji vlastnej webovej stránky.

Táto publikácia je prekladom článku " Ako používať PHP na vkladanie údajov do databázy MySQL» pripravil priateľský projektový tím