Php formulár na pridanie údajov do databázy. Pridávanie údajov do PHP

Komentáre boli presunuté z blogu

SERGEY
14. 09. 2016 o 01:25
Dobrý deň!
Zaujíma ma táto otázka: Aký je najľahší spôsob organizácie ukladania údajov a nastavení programu bez použitia databázy? Nechcem byť viazaný na MySQL alebo Access ..

ADMIN
14. 09. 2016 o 22:14
Ahoj!

Vlastnosti. Nastavenia
App. Config
Súbor XML
serializácia
Skúste si vybrať niečo zo zoznamu.

NIKOLAI
16. 9. 2016 o 02:28
Dobrý deň, ako odstrániť zvýraznený riadok v dataGridVIew z dataGridVIew a phpMyAdmin.

PhpMyAdmin? Toto je len shell pre prácu s databázou, môžete to vysvetliť?

NIKOLAI
18. 9. 2016 o 02:24
potrebujete, aby bol vybratý riadok odstránený z DataGridView a z databázy.

ADMIN
19. 9. 2016 o 07:00
Ako odstrániť riadok v databáze MySQL - pridaný článok.

NIKOLAI
20. 09. 2016 o 09:20
Mnohokrat dakujem.

DIMA
20. 09. 2016 o 10:24
Dobrý deň, je možné túto metódu implementovať nie prostredníctvom DataGridView, ale prostredníctvom ComboBoxu? Ak áno, ako? Vďaka.

ADMIN
22. 09. 2016 o 03:21
Ahoj. Príklad:

GENNADY
22. 09. 2016 o 18:25
prečo zadám do databázy System.Windows.Forms.TextBox, Text: ge

Mimochodom, toto je (ge) na konci tohto génu je napísaný, aj keď je text špecifikovaný v nastaveniach tabuľky. Génové slovo by malo zodpovedať ďalej, prinášam túto tabuľku do svojho programu a ukazuje sa, že zobrazí mi všetok tento nepotrebný text

ADMIN
09.24.2016 o 04:17
S najväčšou pravdepodobnosťou je dotaz SQL napísaný nesprávne, napríklad:

V textBox1 zadajte názov: Gena.

SQL dotaz: "Vložiť do hodnôt názvov tabuliek (textBox1, ..)"; Výsledok: System.Windows.Forms.TextBox

A musíte zadať: "Vložte do názvu hodnoty tabuľky (textBox1.Text, ..)";
Výsledok: Gene

GENNADY
09.24.2016 o 18:41
Tak to je. Vďaka

SERGEY
25.09.2016 o 11:51
Ahoj. A ako implementovať pridávanie do databázy prostredníctvom textového poľa?

ADMIN
26. 9. 2016 o 20:53
Všetko je v zásade rovnaké. Vezmime si napríklad posledný príklad, kde potrebujete:

// vytvorte parametre a pridajte ich do zbierky cmd.Parameters.AddWithValue ("@ Name", textBox1.Text); cmd.Parameters.AddWithValue ("@ Priezvisko", textBox2.Text);

teraz parametre: Meno a Priezvisko prijmú hodnoty zadané do textových polí a prenesú ich do databázy

LINARA
27. 9. 2016 o 17:45
Dobrý deň, ako je zvýraznený riadok v dataGridVIew a phpMyAdmin?

ADMIN
29. 09. 2016 o 02:06
Neviem, ako je možné zvýraznený riadok vykonať v phpMyAdmin. A napríklad v dataGridView sa to dá urobiť pomocou udalosti SelectionChanged.

PSH
30.9.2016 o 03:48
2 Linara:
Ak chcete reťazce upravovať týmto spôsobom, chyťte nástroj a la HediSQL, vyladte a upravte reťazce.

2admin
Dobrý deň! Ďakujem za materiály - všetko je veľmi chladne uvedené)
Otázka: K tomuto dotazu pridávam údaje (ide o test):

String sql = "VLOŽIŤ DO UŽÍVATEĽOV (` FIO`, `Tour`,` Count`, `Cost`,` Date`, `Passport`,` Birth`) VALUES ("Kolyan", "Moscow", "1 + 1 ", 1100," 2011-11-11 "," 1111 1111 "," 9/11/1900 ");";

Údaje sú zadané všetko je v poriadku, ale v databáze (mysql) namiesto azbuky je „????“.

Visual Studio hovorí, že System.String je sekvencia Unicode.

Tiež vyskúšané:

ALTER DATABÁZE `test` COLLATE" koi8r_general_ci "; ALTER TABLE `users` COLLATE =" koi8r_general_ci "; ALTER DATABÁZE `test` COLLATE" utf8_unicode_ci "; ALTER TABLE `users` COLLATE =" utf8_unicode_ci ";

Ale nepomáha to ..
Čo môže byť zlé? Rôzne kódovanie pre VS a DB? Alebo čo?
Mohlo by sa odoslať, čo sa má prečítať / zmeniť.
Vďaka

ADMIN
01.10.2016 o 09:49
Ahoj.

V databáze (a v tabuľke) je zoradenie utf_general_ci

Existuje také porovnanie? Možno utf8_general_ci?

Databáza MySQL sa zvyčajne vytvára výberom porovnania utf8_general_ci, takže s azbukou nie sú žiadne problémy, pokiaľ, samozrejme, krakozyabras nepochádzajú z klienta na server.

Na porovnanie sa používa COLLATION, ale v tomto prípade je dôležitá znaková sada. Preto sa najskôr musíte uistiť, že je správne nastavený na serveri, napríklad v utf8, a nie v latin1.

Pri pripájaní prostredníctvom .net používa (predvolený) konektor latin1, takže niekedy musíte v reťazci pripojenia výslovne zadať kódovanie utf8:

MySqlConnection mycon; mycon = nový MySqlConnection ("server = 127.0.0.1; uid = vasya; pwd = 123; databáza = test; Charset = utf8;"); // MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 o 11:34
Máte pravdu, popísané, utf8_general_ci!
Áno, pomohlo to ;; Charset = utf8;
Mnohokrat dakujem!

SERGIA
02.10.2016 o 11:02
Ďakujem za potrebný pracovný príklad. Otázka
Vytvoril som textové pole, do ktorého by som chcel zadať IP adresu databázy, ale neviem, ako tu nahradiť tieto údaje.

Reťazec conStr = " [chránené e -mailom]; užívateľ = test; "+
"databáza = test; heslo = test;";
Prosím, povedzte mi, ako do tejto konštrukcie vložiť údaje z textových polí do Windows formulára….

ADMIN
03.10.2016 o 11:50
"[chránené e -mailom]; užívateľ = ...
Vo všeobecnosti je namiesto takého reťazca lepšie použiť vlastnosti, ako v tomto článku, alebo metódu String.Format ().

OLGA2203
15.05.2017 o 20:14

Pripojenie reťazca = „Server = 127.0.0.1; Port = 3306; Databáza = základňa; Zdroj údajov = localhost; užívateľ = root;“; MySqlConnection con = new MySqlConnection (Connect); con.Open (); // Vytvorte pripojenie k databáze. MySqlCommand cmd = nový MySqlCommand (); cmd.CommandText = @”VLOŽIŤ DO TOVARU (ID, kategória, názov, ochranná známka, cena, fotografia, veľkosť, farba, materiál, počet) HODNOTY (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Size, @Color, @Material, @Count) “; cmd.Parameters.AddWithValue („@ pr“, počítadlo); cmd.Parameters.AddWithValue („@ kategória“, comboBox1.SelectedItem.ToString ()); cmd.Parameters.AddWithValue („@ meno“, textBox1.Text); cmd.Parameters.AddWithValue („@ TradeMark“, textBox2.Text); cmd.Parameters.AddWithValue („@ Price“, Convert.ToInt32 (textBox4.Text)); cmd.Parameters.AddWithValue („@ Photo“, textBox3.Text); cmd.Parameters.AddWithValue („@ Size“, textBox6.Text); cmd.Parameters.AddWithValue („@ Color“, textBox5.Text); cmd.Parameters.AddWithValue („@ Material“, textBox8.Text); cmd.Parameters.AddWithValue („@ Count“, Convert.ToInt32 (textBox7.Text)); cmd.Connection = con; cmd.ExecuteNonQuery (); MessageBox.Show („Pridanie bolo úspešné“, „Pridanie bolo úspešné“, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Vydá sa chyba „Stĺpec‘ ID ’nemôže byť null“, odstránim pridanie do stĺpca ID - to isté píše o nasledujúcom stĺpci atď.
Ak do HODNOTY zadám do zátvoriek nejaké konštantné hodnoty, riadok sa pridá do základu.
Môžete mi prosím povedať, v čom je problém? Potrebujem do databázy zapísať presne údaje a hodnoty zadané prostredníctvom formulára

Od autora: ehm, slová nemožno vymazať z piesne! Dajú sa však odstrániť, aktualizovať alebo vložiť ďalšie. Hlavná vec je, že slová sú zadané do databázy. Dnes vám povieme, ako sa údaje zaznamenávajú v MySQL a ako to urobiť správne, aby pieseň znela!

Pridávanie záznamov pomocou phpMyAdmin

Plášť phpMyAdmin na správu databáz MySQL DBMS má „ľahkú“ funkciu na pridávanie nových záznamov do databázových tabuliek. Vďaka svojej jednoduchosti je ideálny pre zelených figurín aj pre lenivých profesionálov.

Ak chcete do tabuľky zadať nové informácie, mali by ste zadať program s oprávneniami správcu. Potom v zoznamoch vľavo vyberte požadovanú základňu a tabuľku. Potom v hornom menu prejdite na položku „Vložiť“.

Potom, aby ste urobili záznam v databáze MySQL, vyplňte v nasledujúcom okne všetky stĺpce poľa „Hodnota“ a v spodnej časti kliknite na „OK“.

Snímka obrazovky vyššie ukazuje, že upravená tabuľka „Zvieratá“ pozostáva z dvoch stĺpcov (polí): id a meno. Druhá časť uvádza typ každého zo stĺpcov. Do poľa pre názov potrebujeme zadať iba hodnotu, pretože stĺpec id je primárnym kľúčom a pri vytváraní tabuľky sa automaticky zvyšuje. To znamená, že hodnota poľa id bude MySQL generovaná automaticky pripočítaním 1 k predchádzajúcej celočíselnej hodnote.

Ak chcete zistiť, ktoré pole záznamov údajov v MySQL je primárnym kľúčom, v programe phpMyAdmin prejdite do ponuky (s vybratou tabuľkou vľavo) v hornom menu na kartu „Štruktúra“. Tu je popis všetkých polí v tabuľke, ich typu a ďalších charakteristík.

Vkladanie údajov pomocou dotazov SQL

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

VYTVORIŤ TABUĽKU Zviera (id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR (30) NOT NULL, PRIMARY KEY (id));

VYTVORIŤ TABUĽKU zviera (id MEDIUMINT NOT NULL AUTO_INCREMENT,

meno CHAR (30) NIE JE NULL, PRIMARY KEY (id));

Po vytvorení tabuľky a zapísaní údajov do MySQL databáza(prostredníctvom karty "Vložiť") vás program upozorní, že zvieratám bol pridaný riadok s hodnotou identifikátora 1. A o niečo nižšie v okne editora sa zobrazí kód požiadavky, ktorý bol vytvorený škrupinou pre nás a odoslané na databázový server.

Vyžiadať kód:

VLOŽIŤ DO `my_db1`.`animal` (` id`, `name`) HODNOTY (NULL," Cat ");

VLOŽIŤ DO `my_db1`. `animal` (` id`, `name`) HODNOTY (NULL," Mačka ");

Pozrime sa na to bližšie. V SQL pre vloženie Nový riadok tabuľka používa príkaz INSERT. Serveru to hovorí, aby vložil zadané hodnoty do polí pre id a meno (HODNOTY (NULL, „Mačka“).

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

Ako vložiť záznam pomocou PHP

Všetko, čo sme zvažovali, je len „predohrou“ hlavnej akcie, v ktorej vstupuje na scénu serverový jazyk „jeho výsost“ Programovanie v PHP... Vďaka nemu sa MySQL ako DBMS tak rozšíril na webe.
Veľká časť World Wide Web je postavená na prepojení týchto dvoch internetových technológií. Kamkoľvek sa pozriete, nájdete ich všade: v moderných CMS, "vlastnoručne napísaných" strojoch a na serveri.

Nie je prekvapením, že na zápis údajov do MySQL PHP poskytuje toľko vstavaných funkcií. My sa ale zameriame na tie najdôležitejšie z nich. Tu je kód, ktorý do tabuľky zvierat pridáva nové „zviera“. Ak sa veľmi snažíte, potom týmto spôsobom môžete zhromaždiť celý zverinec :)

$ con_str = mysql_connect ("localhost", "root", "", "db1"); if (mysql_connect ("localhost", "root")) (echo "Hello !!";) mysql_select_db ("db1", $ con_str); $ query_str = "VLOŽIŤ DO` db1`.`animal` (` id`, `name`) HODNOTY (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 = "VLOŽIŤ DO` db1`.`animal` (`id`,` name`) HODNOTY (NULL, "pes") ";

mysql_query ($ query_str);

mysql_close ();

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

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

Ukázať všetky popísané príklady zápisu do databázy MySQL pomocou pomocou PHP použili sme Denver Gentleman's Kit. Obsahuje lokálny server Apache, server MySQL, phpMyAdmin a niekoľko ďalších užitočných nástrojov na vytváranie a testovanie kódu.

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 budeme pripájať. Pomocou funkcie mysql_query () sme spustili na vykonanie dotaz SQL napísaný v premennej $ query_str. A na konci bolo nadviazané spojenie uzavreté (funkcia mysql_close ()). Keď sa teraz pozrieme do nášho zverinca (stolové zviera), nájdeme tam nového „domáceho miláčika“.

Na napísanie v MySQL PHP „láskavo“ poskytol všetku potrebnú sadu funkcií. Hlavnou vecou, ​​na ktorej nováčikovia „pália“ pri použití SQL v kóde programu, je nesprávne písanie dotazov, porušenie syntaxe a striedanie znakov na únik (úvodzovky).

Aby ste sa vyhli výskytu extra „sivých“ vlasov na hlave, je lepšie skontrolovať správnosť žiadosti pomocou phpMyAdmin. Za týmto účelom umiestnite kód SQL do editora programu a spustite ho na spustenie. 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 „zostaviť“ svoj zverinec a správne zmeniť slová akejkoľvek „piesne“. A PHP je ideálne na zápis do databázy MySQL, preto vám odporúčame nadviazať „blízke“ priateľstvo s týmto „skvelým“ programovacím jazykom!

V tomto článku analyzujeme možno niektoré z najdôležitejších Dotazy SQL... to dotazy na pridávanie a odstraňovanie záznamov z databázovej tabuľky... Pretože, VEĽMI často je to nevyhnutné pridať nové záznamy do tabuľky, a aby to urobili v automatickom režime, potom je tento materiál potrebný na štúdium.

Začať Dotaz na pripojenie SQL nový vstup k stolu:

VLOŽIŤ DO UŽÍVATEĽOV (prihlasovacie údaje, heslo) („TestUser“, „123456“)

Pri pridávaní položky je prvým príkazom „ VLOŽIŤ DO", potom názov tabuľky, do ktorej vložíme záznam. Ďalej nasledujú názvy polí, ktoré chceme vyplniť v zátvorkách. A potom v zátvorkách za slovom" hodnoty"začíname vypisovať hodnoty tých polí, ktoré sme vybrali. Po vykonaní tohto dotazu sa v našej tabuľke objaví nový záznam."

Niekedy to trvá aktualizovať záznam v tabuľke Na to existuje nasledujúce Dotaz SQL:

UPDATE užívateľov SET login = "TestUser2", pass = "1234560" WHERE login = "TestUser"

Tento dotaz je zložitejší, pretože má konštrukciu " KDE", Ale viac o tom nižšie. Najprv príde príkaz" AKTUALIZÁCIA"nasleduje názov tabuľky a za ním" NASTAVIŤ"Popisujeme hodnoty všetkých polí, ktoré chceme zmeniť. Bolo by to jednoduché, ale ponúka sa otázka:" Ktorý záznam by ste mali aktualizovať?". Na to existuje" KDE". V tomto prípade aktualizujeme záznam, pole" Prihlásiť sa"na čom záleží" TestUser". Upozorňujeme, že ak existuje niekoľko takýchto záznamov, potom úplne všetko bude aktualizované! Toto je veľmi dôležité pochopiť, inak riskujete stratu stola.

Porozprávajme sa trochu viac o " KDE„. Okrem jednoduchých testov na rovnosť existujú aj nerovnosti a logické operácie: A a ALEBO.

UPDATE users SET login = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

The Dotaz SQL tieto záznamy aktualizuje id ktorých je menej 15 A lúka " Prihlásiť sa"má význam" TestUser„. Dúfam, že si prišiel na dizajn.“ KDE„Pretože je to veľmi dôležité. Presne.“ KDE„používa sa, keď načítanie záznamov z tabuliek, a toto je najčastejšie používaná úloha pri práci s databázami.

A na záver jednoduchý Dotaz SQL na odstránenie záznamov z tabuľky:

ODSTRÁNIŤ OD užívateľov WHERE prihlásenie = "TestUser2"

Po príkaze " ODSTRÁNIŤ Z"je názov tabuľky, z ktorej chcete odstrániť záznamy. Ďalej popíšeme konštrukciu" KDE ". Ak záznam zodpovedá popísaným podmienkam, bude odstránený. KDE“, je možné odstrániť ľubovoľný počet z nich.

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.

V tomto článku sa pozrieme na to, ako používať PHP na vkladanie riadkov do databázy MySQL.

Krok 1 - vytvorenie tabuľky

Najprv musíte vytvoriť tabuľku pre údaje. Toto je jednoduchý postup, ktorý je možné vykonať pomocou phpMyAdmin na ovládacom paneli hostiteľa.

Po prihlásení sa vám phpMyAdmin zobrazí nasledujúce rozhranie:
Vytvorme tabuľku s názvom Študenti v databáze u266072517_name kliknutím na tlačidlo „Vytvoriť tabuľku“. Potom uvidíme nová stránka, na ktorom sme nastavili všetky potrebné parametre tabuľky:

Toto je najjednoduchšie nastavenie, ktoré je možné použiť pre stôl a pre získanie Ďalšie informácie 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 - typ stĺpca. Vybrali sme napríklad varchar, pretože budeme zadávať reťazcové hodnoty.
  • Dĺžka / hodnoty- používa sa na označenie maximálnej dĺžky, ktorú môže mať záznam v tomto stĺpci.
  • Register - pre pole „ID“ sme použili index „Primárny“. Pri vytváraní tabuľky sa odporúča použiť iba jeden stĺpec ako primárny kľúč. Slúži na vypísanie záznamov v tabuľke a je potrebný pri nastavovaní tabuľky. Tiež som označil „A_I“, čo znamená „Auto Increment“ - parameter na automatické priradenie počtu záznamov (1,2,3,4 ...).
    Kliknite na tlačidlo „Uložiť“ a tabuľka sa vytvorí.

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

Možnosť 1 - metóda MySQLi

Najprv musíte vytvoriť pripojenie k databáze. Potom použijeme dotaz SQL INSERT. Kompletný príklad kódu:

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

Prvá časť kódu (riadky 3 - 18) je na pripojenie k databáze.

Začnime riadkom 19:

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

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

Ďalej nasleduje vymenovanie stĺpcov, do ktorých sú vložené hodnoty: meno, priezvisko, e -mail. Údaje budú doplnené v uvedenom poradí. Ak by sme napísali (e -mail, priezvisko, meno), hodnoty by boli pridané v inom poradí.

Ďalšou časťou je operátor HODNOTY. Tu určujeme hodnoty pre stĺpce: name = Thom, lastname = Vial, email = [chránené e -mailom]

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

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

Tento kód zobrazuje správu o úspešnom dokončení žiadosti.

A posledná časť (22 - 24 riadkov) zobrazuje upozornenie, ak žiadosť nebola úspešná:

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

Možnosť 2 - Metóda dátového objektu PHP (PDO)

Najprv sa musíme pripojiť k databáze vytvorením nového objektu PDO. Pri práci s ním použijeme rôzne metódy PDO. 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 „opraví“. Napríklad najjednoduchší útok s injekciou SQL je možné vykonať jednoduchým vložením jazyka SQL do poľa formulára. Napríklad:

Pretože je to syntakticky správny SQL, bodkočiarka robí z DROP DATABASE user_table nový dotaz SQL a užívateľská tabuľka sa zruší. Pripravené výrazy (viazané premenné) neumožňujú bodkočiarkam a úvodzovkám dokončiť pôvodný dotaz, takže príkaz DROP DATABASE nebude nikdy vykonaný.

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

Správny kód:

getMessage (); ) // Nastaviť premenné pre osobu, ktorú chceme pridať do databázy $ first_Name = "Thom"; $ last_Name = "Fialka"; $ email = " [chránené e -mailom]"; // Vytvorte premennú, ktorá volá metódu Prepar () databázového objektu // Dotaz SQL, ktorý chcete vykonať, sa zadá ako parameter a zástupné symboly sa zapisujú takto: zástupný názov_názov $ my_Insert_Statement = $ my_Db_Connection-> pripraviť ( "INSERT INTO Students (name, lastname, email) VALUES (: first_name ,: last_name ,: email)")))) // // Teraz skriptu povieme, ktorá premenná odkazuje na každý zástupný symbol, aby použil metódu bindParam () // Prvý parameter je zástupný symbol vo vyššie uvedenom výkaze, druhá je premenná, na ktorú by sa mala vzťahovať $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: e-mail, $ 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, poskytne vám možnosť vytlačiť si vlastnú správu, ak ($ ​​my_Insert_Statement-> execute ( )) (echo „Nové odporúčanie rdvytvorené úspešne "; ) else (echo "Nedá sa vytvoriť záznam";) // V tomto mieste môžete zmeniť údaje premenných a spustiť dotaz na pridanie ďalších údajov k údajom databázy do databázy $ first_Name = "John"; $ last_Name = "Smith"; $ email = " [chránené e -mailom]"; $ my_Insert_Statement-> execute (); // Spustí sa znova pri zmene premennej, ak ($ ​​my_Insert_Statement-> execute ()) (echo" New recordcreatedsuccessfully ";) else (echo" Unable to createterecord ";

Na riadkoch 28, 29 a 30 používame metódu bindParam () databázového objektu. Existuje aj metóda bindValue (), ktorá sa veľmi líši od predchádzajúcej.

  • bindParam () - Táto metóda vyhodnocuje údaje, keď je dosiahnutá metóda execute (). Keď skript prvýkrát dosiahne metódu execute (), zistí, že $ first_Name sa zhoduje s „Thom“. Potom túto hodnotu naviaže a spustí požiadavku. Akonáhle skript dosiahne druhú metódu execute (), vidí, že $ first_Name sa teraz zhoduje s „John“. Potom spojí túto hodnotu a znova spustí dotaz s novými hodnotami. Je dôležité si uvedomiť, že sme raz definovali dotaz a znova ho použili s rôznymi údajmi v rôznych bodoch skriptu.
  • bindValue () - Táto metóda vyhodnocuje údaje hneď, ako sa dosiahne bindValue (). Pretože bol $ first_Name nastavený na „Thom“, pri dosiahnutí parametra bindValue () sa použije vždy, keď sa na príkaz $ my_Insert_Statement zavolá metóda execute ().
    Všimnite si toho, že znova používame premennú $ first_Name a druhýkrát jej priradíme novú hodnotu. Po spustení skriptu budú v databáze uvedené obidva mená, a to napriek tomu, že premenná $ first_Name na konci skriptu má hodnotu „John“. Nezabudnite, že PHP pred spustením skontroluje celý skript.

Ak aktualizujete skript a nahradíte bindParam za bindValue, dvakrát vložíte „Thom Vial“ do databázy a John Smith bude ignorovaný.

Krok 3 - Potvrdenie úspechu a riešenie problému

Ak bola požiadavka na vloženie riadkov do databázy úspešná, zobrazí sa nasledujúce hlásenie:

Odstránenie bežných chýb

MySQLi

V opačnom prípade sa zobrazí chybové hlásenie. Urobme napríklad jednu chybu syntaxe v kóde a dostaneme nasledujúce:

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

"Chyba: VLOŽIŤ DO študenti (meno, priezvisko, e -mail) HODNOTY (" Thom "," Vial "," [chránené e -mailom]") Máte chybu v syntaxe SQL; v príručke, ktorá zodpovedá verzii vášho servera MySQL, nájdete správnu syntax v blízkosti hodnôt (meno, priezvisko, e -mail) („ Thom “,„ Vial “,„ [chránené e -mailom]")" na riadku 1 "

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

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

Namiesto bežných sme použili kučeravé rovnátka. Toto je nesprávne a skript vygeneroval chybu syntaxe.

PDO

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

Toto nastavenie by sa malo použiť iba pri vývoji skriptu. Po aktivácii sa môžu zobraziť názvy databázy a tabuliek, ktoré je lepšie skryť z bezpečnostných dôvodov. Vo vyššie popísanom prípade, keď sa namiesto bežných zátvoriek použili zložené zátvorky, chybové hlásenie vyzerá takto:

Fatal error: Uncaughtexception "PDOException" with message "SQLSTATE: Syntax error or accessviolation: 1064 Máte chybu v syntaxe SQL; v príručke, ktorá korešponduje s vašou verziou servera MySQL, nájdete správnu syntax na použitie v blízkosti „(meno, priezvisko, e -mail) HODNOTY („ Thom “,„ liekovka “,„ [chránené e -mailom]")" na riadku 1 "

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

  • Stĺpce sú nesprávne (neexistujúce stĺpce alebo pravopisná chyba v názvoch).
  • Jeden typ hodnoty je priradený k stĺpcu iného typu. Ak sa napríklad pokúsite vložiť číslo 47 do stĺpca Názov, zobrazí sa chyba. V tomto stĺpci musíte použiť reťazcovú hodnotu. Ak by sme však uviedli číslo v úvodzovkách (napríklad „47“), fungovalo by to, pretože ide o reťazec.
  • Bol vykonaný pokus o zadanie údajov do neexistujúcej tabuľky. Rovnako ako pravopisná chyba v názve tabuľky.

Po úspešnom zadaní údajov uvidíme, že boli pridané do databázy. Nasleduje 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í sa programovaniu a 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