Přidání dat do sql php tabulky. Přidávání dat do PHP

V tomto článku se podíváme na to, jak pomocí PHP vkládat řádky do databáze MySQL.

Krok 1 - vytvoření tabulky

Nejprve musíte vytvořit tabulku pro data. Toto je jednoduchý postup, který lze provést pomocí phpMyAdmin v ovládacím panelu vašeho hostingu.

Po přihlášení do phpMyAdmin uvidíte rozhraní jako toto:

Vytvořme tabulku s názvem Studenti v databázi u266072517_name kliknutím na tlačítko "Vytvořit tabulku". Potom uvidíme nová stránka, na kterém nastavíme všechny potřebné parametry tabulky:

Tohle je nejvíc snadné nastavení které lze použít pro stůl a získat dodatečné informace o struktuře tabulek / databází.

Možnosti sloupců:

  • Název je název sloupce, který se zobrazí v horní části tabulky.
  • Typ – typ sloupce. Například jsme zvolili varchar, protože budeme zadávat hodnoty řetězce.
  • Délka / Hodnoty - používá se k označení maximální délkaže záznam v tomto sloupci může mít.
  • Index - pro pole "ID" jsme použili "Primární" index. Při vytváření tabulky se doporučuje používat jako primární klíč pouze jeden sloupec. Slouží k výpisu záznamů v tabulce a je vyžadován při nastavování tabulky. Dále jsem označil "A_I", což je zkratka pro "Auto Increment" - parametr pro automatické přidělování počtu záznamů (1,2,3,4 ...).
    Klikněte na tlačítko Uložit a tabulka se vytvoří.

Krok 2. Psaní PHP kódu pro vložení dat do MySQL.

Možnost 1 – metoda MySQLi

Nejprve musíte vytvořit připojení k databázi. Poté použijeme dotaz SQL INSERT. Kompletní příklad kódu:

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

První část kódu (řádky 3 - 18) je pro připojení k databázi.

Začněme řádkem 19:

$ sql = "INSERT INTO Students (jméno, příjmení, e-mail) VALUES (" Thom "," Vial "," [e-mail chráněný]")";

Vkládá data do databáze MySQL. INSERT INTO je příkaz, který přidává data do zadané tabulky. V našem příkladu jsou data přidána do tabulky Studenti.

Následuje výčet sloupců, do kterých se vkládají hodnoty: jméno, příjmení, email. Údaje budou přidány v zobrazeném pořadí. Pokud bychom napsali (e-mail, příjmení, jméno), hodnoty by byly přidány v jiném pořadí.

Další částí je operátor VALUES. Zde zadáváme hodnoty pro sloupce: name = Thom, lastname = Lahvička, email = [e-mail chráněný]

Spustili jsme požadavek pomocí kódu PHP. V kódu musí být SQL dotazy uvedeny v uvozovkách. Další část kódu (řádky 20-22) kontroluje, zda byl náš požadavek úspěšný:

if (mysqli_query ($ conn, $ sql)) (echo "Nový záznam byl úspěšně vytvořen";)

Tento kód zobrazí zprávu o úspěšném dokončení požadavku.

A poslední část (22 - 24 řádků) zobrazuje upozornění, pokud požadavek nebyl úspěšný:

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

Možnost 2 – Metoda datových objektů PHP (PDO).

Nejprve se musíme připojit k databázi vytvořením nového objektu PDO. Při práci s ním využijeme různé metody CHOP. Objektové metody se nazývají takto:

$ the_Object-> the_Method ();

PDO vám umožňuje „připravit“ SQL před jeho spuštěním. SQL dotaz je před spuštěním vyhodnocen a "opraven". Například nejjednodušší útok SQL injection lze provést jednoduchým vložením SQL do pole formuláře. Například:

Protože se jedná o syntakticky správné SQL, středník udělá z DROP DATABASE user_table nový dotaz SQL a uživatelská tabulka bude zrušena. Připravené výrazy (vázané proměnné) neumožňují středníky a uvozovky dokončit původní dotaz, takže příkaz DROP DATABASE nebude nikdy proveden.

Chcete-li použít připravené příkazy, musíte napsat novou proměnnou, která volá metodu Prepare () databázového objektu.

Správný kód:

getMessage (); ) // Nastavíme proměnné pro osobu, kterou chceme přidat do databáze $ first_Name = "Thom"; $ last_Name = "Lahvička"; $ email = " [e-mail chráněný]"; // Vytvořte proměnnou, která volá metodu Prepare () databázového objektu // Jako parametr se zadá SQL dotaz, který chcete provést, a zástupné symboly se zapisují takto: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> Prepare ( " INSERT INTO Students ( jméno, příjmení, e-mail) VALUES (: jméno,: příjmení,: e-mail) "); // Nyní skriptu řekneme, která proměnná odkazuje na každý zástupný symbol, aby použil metodu bindParam () // První parametr je zástupný symbol ve výše uvedeném příkazu, druhá je proměnná, která by měla odkazovat na $ my_Insert_Statement-> bindParam (: first_name, $ first_Name); $ my_Insert_Statement-> bindParam (: last_name, $ last_Name); $ my_Insert_Statement-> bindParam (: email, $ email); // Proveď dotaz s použitím dat, která jsme právě definovali // Metoda execute () vrátí TRUE, pokud je úspěšná, a FALSE, pokud ne, dává ti možnost vytisknout si vlastní zprávu, pokud ($ my_Insert_Statement-> spustit ()) (echo „Nové reco rdvytvořeno úspěšně"; ) else (echo "Unable to createrecord";) // V tomto okamžiku můžete změnit data proměnné a spustit dotaz pro přidání dalších dat k datům databáze do databáze $ first_Name = "John"; $ last_Name = "Smith"; $ email = " [e-mail chráněný]"; $ my_Insert_Statement-> vykonat (); // Spustit znovu, když se proměnná změní if ($ my_Insert_Statement-> vykonat ()) (echo" Nový záznam byl úspěšně vytvořen ";) else (echo" Nelze vytvořit záznam ";

Na řádcích 28, 29 a 30 používáme metodu bindParam () databázového objektu. Existuje také metoda bindValue (), která se velmi liší od předchozí.

  • bindParam () - Tato metoda vyhodnocuje data, když je dosaženo metody execute (). Když skript poprvé dosáhne metody execute (), zjistí, že $ first_Name odpovídá "Thom". Poté sváže tuto hodnotu a spustí požadavek. Když skript dosáhne druhé metody spuštění (), vidí, že $ first_Name je nyní "John". Poté tuto hodnotu sváže a spustí požadavek znovu s novými hodnotami. Je důležité si pamatovat, že jsme jednou definovali dotaz a znovu jej použili s různými daty v různých bodech skriptu.
  • bindValue () – Tato metoda vyhodnocuje data, jakmile je dosaženo bindValue (). Vzhledem k tomu, že $ first_Name bylo nastaveno na "Thom", když je dosaženo bindValue (), bude použito pokaždé, když je voláno execute () na $ my_Insert_Statement.
    Všimněte si, že znovu používáme proměnnou $ first_Name a podruhé jí přiřazujeme novou hodnotu. Po spuštění skriptu budou v databázi uvedena obě jména, přestože proměnná $ first_Name na konci skriptu má hodnotu "John". Pamatujte, že PHP před spuštěním kontroluje celý skript.

Pokud aktualizujete skript a nahradíte bindParam hodnotou bindValue, vložíte "Thom Vial" do databáze dvakrát a John Smith bude ignorován.

Krok 3 – Potvrzení úspěchu a vyřešení problémů

Pokud byl požadavek na vložení řádků do databáze úspěšný, zobrazí se následující zpráva:

Odstranění běžných chyb

MySQLi

V opačném případě se zobrazí chybová zpráva. Udělejme například jednu chybu syntaxe v kódu a dostaneme následující:

První část kódu je v pořádku, připojení bylo úspěšně navázáno, ale SQL dotaz selhal.

"Chyba: INSERT INTO Students (jméno, příjmení, e-mail) VALUES (" Thom "," Vial "," [e-mail chráněný]") Máte chybu ve své syntaxi SQL; zkontrolujte příručku, která odpovídá verzi vašeho serveru MySQL, kde najdete správnou syntaxi, která se má použít blízko" (jméno, příjmení, e-mail) VALUES ("Thom", "Vial", " [e-mail chráněný]")" na řádku 1"

Došlo k chybě syntaxe, která způsobila selhání skriptu. Chyba byla zde:

$ sql = "INSERT INTO Students (jméno, příjmení, e-mail) VALUES (" Thom "," Vial "," [e-mail chráněný]")";

Použili jsme složená rovnátka místo běžných. Toto je nesprávné a skript vygeneroval chybu syntaxe.

CHOP

Na řádku 7 připojení PDO je chybový režim nastaven na "zobrazit všechny výjimky". Pokud by byla zadána jiná hodnota a požadavek selhal, neobdrželi bychom žádné chybové zprávy.

Toto nastavení by se mělo používat pouze při vývoji skriptu. Při aktivaci se mohou zobrazovat názvy databáze a tabulek, které jsou z bezpečnostních důvodů lépe skryté. Ve výše popsaném případě, kdy byly místo běžných závorek použity složené závorky, vypadá chybová zpráva takto:

Závažná chyba: Uncaughtexception "PDOException" se zprávou "SQLSTATE: Chyba syntaxe nebo porušení přístupu: 1064 Máte chybu v syntaxi SQL; zkontrolujte příručku, která odpovídá verzi vašeho serveru MySQL, kde najdete správnou syntaxi, která se má použít v blízkosti „(jméno, příjmení, e-mail) VALUES (“ Thom “, Vial “,” [e-mail chráněný]")" na řádku 1"

Další možné problémy:

  • Sloupce jsou nesprávné (neexistující sloupce nebo pravopisná chyba v jejich názvech).
  • Jeden typ hodnoty je přiřazen sloupci jiného typu. Pokud se například pokusíte vložit číslo 47 do sloupce Název, dostanete chybu. V tomto sloupci musíte použít hodnotu řetězce. Ale pokud bychom zadali číslo v uvozovkách (například "47"), fungovalo by to, protože je to řetězec.
  • Byl učiněn pokus zadat data do tabulky, která neexistuje. Stejně tak pravopisná chyba v názvu tabulky.

Po úspěšném zadání údajů uvidíme, že byly přidány do databáze. Níže je uveden příklad tabulky, do které byla přidána data.

V tomto příspěvku vám chci říct jak přenést do Databáze zadaná data ve formuláři... A tak vytvoříme jednoduchý formulář, kde budeme mít dvě pole: uživatelské jméno a jeho email:

Tvé jméno:
Tvůj e-mail:


Tento formulář lze použít k registraci nového uživatele, k zasílání newsletterů, shromažďování statistik a k čemukoli... Obecně uživatel do tohoto formuláře vyplní své údaje: jméno a poštu, klikne na tlačítko a následně údaje přejde do php skriptu:

$ jméno = $ _POST ["jméno"]; $ email = $ _POST ["e-mail"]; $ result = mysqli_query ("INSERT INTO uživatele (jméno, email) VALUES (" $ jméno "," $ email ")"); if ($ výsledek) (echo "Data byla úspěšně uložena!";) else (echo "Došlo k chybě, zkuste to prosím znovu.";)


Co se děje v tomto skriptu? Pojďme na to teď!
Data zadaná do formuláře se přenesou metodou POST do php skriptu (který je napsán výše) a pomocí globálního pole $ _POST se data zformují do proměnných $ name a $ email:

$ jméno = $ _POST ["jméno"]; $ email = $ _POST ["e-mail"];


Poté, co jsou proměnné připraveny k zadání do databáze, vytvoříme požadavek. Nejprve však musí být vaše skripty již připojeny k databázi, jak se připojit k databázi, jsem psal v tomto vláknu:. Samotná žádost vypadá takto:

$ result = mysqli_query ("INSERT INTO uživatele (jméno, email) VALUES (" $ jméno "," $ email ")");


V tomto kódu jsme uvedli, že do buněk se jménem a e-mailem, které jsou v tabulce uživatelů, budou přidány následující proměnné: $ name a $ email.
Dále, pokud vše proběhlo v pořádku, obdržíme zprávu od podmínky:

Data byla úspěšně uložena!


Pokud se vyskytly nějaké problémy a data nebyla zadána, obdržíme chybovou zprávu:

Došlo k chybě, zkuste to prosím znovu.


To je vše!

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

Pokud si přejete, můžete přidat další pole pro zadávání informací, například potřebujeme přidat pole pro zadání města uživatele. Máme již hotový skript (napsaný výše), nyní jen přidáme pole Tvoje město, pojmenujeme proměnnou: $ město. A tak ve formuláři pro zadávání dat po:

Tvůj e-mail:


přidat:

Tvoje město:


Ve skriptu php po:

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


přidat:

$ město = $ _POST ["město"];


A samozřejmě to také přidáme do požadavku, takto:

$ result = mysqli_query ("INSERT INTO uživatele (jméno, email, město) VALUES (" $ jméno "," $ email "," $ město ")");


Zde je to, čím byste měli skončit:
Vstupní formulář:

Tvé jméno:
Tvůj e-mail:
Tvoje město:


Skript:

$ jméno = $ _POST ["jméno"]; $ email = $ _POST ["e-mail"]; $ město = $ _POST ["město"]; $ result = mysqli_query ("INSERT INTO uživatele (jméno, email, město) VALUES (" $ jméno "," $ email "," $ město ")"); if ($ result == true) (echo "Data byla úspěšně uložena!";) else (echo "Došlo k chybě, zkuste to prosím znovu.";)


Jak vidíte, nic složitého! V případě potřeby můžete přidat další pole a další a další ...

V tomto článku rozebereme možná některé z nejdůležitějších SQL dotazy... Tento dotazy pro přidání a odebrání záznamů z databázové tabulky... Vzhledem k tomu, VELMI často je to nutné přidat do tabulky nové záznamy, a to v automatickém režimu, pak je tento materiál vyžadován pro studium.

Začít SQL dotaz pro přidání nového záznamu do tabulky:

INSERT INTO users (login, pass) values ​​​​("TestUser", "123456")

Při přidávání záznamu je prvním příkazem " VLOŽ DO", dále název tabulky, do které záznam vkládáme. Dále následují názvy polí, která chceme vyplnit v závorce. A dále v závorce za slovem" hodnoty"začneme vypisovat hodnoty těch polí, která jsme vybrali. Po provedení tohoto dotazu se v naší tabulce objeví nový záznam."

Někdy to trvá aktualizovat záznam v tabulce, k tomu je následující SQL dotaz:

AKTUALIZACE uživatelů SET login = "TestUser2", pass = "1234560" WHERE login = "TestUser"

Tento dotaz je složitější, protože má konstrukci " KDE", ale o tom trochu níže. Nejprve přichází příkaz" AKTUALIZACE"následuje název tabulky a za ním" SOUBOR"Popisujeme hodnoty všech polí, která chceme změnit. Bylo by to jednoduché, ale vyvstává otázka:" Který záznam byste měli aktualizovat?". K tomu existuje" KDE". V tomto případě aktualizujeme záznam, pole" přihlásit se"na čem záleží" TestUser". Upozorňujeme, že pokud existuje několik takových záznamů, pak úplně vše bude aktualizováno! To je velmi důležité pochopit, jinak riskujete ztrátu stolu.

Promluvme si trochu více o " KDE Kromě jednoduchých testů rovnosti existují také nerovnosti a logické operace: A a NEBO.

AKTUALIZACE NASTAVENÍ uživatelů přihlášení = "TestUser2", pass = "1234560" WHERE id< 15 AND login="TestUser"

The SQL dotaz tyto záznamy aktualizuje id kterých je méně 15 A pole" přihlásit se"má význam" TestUser"Doufám, že jsi přišel na design." KDE"Protože je to velmi důležité. Přesně." KDE"používá se, když načítání záznamů z tabulek, a to je nejčastěji používaná úloha při práci s databázemi.

A nakonec jeden jednoduchý SQL dotaz pro odstranění záznamů z tabulky:

DELETE FROM users WHERE login = "TestUser2"

Po příkazu " ODSTRANIT Z"je název tabulky, ve které chcete smazat záznamy. Dále popíšeme konstrukci" WHERE ". KDE“, libovolný počet z nich lze smazat.

V této lekci se naučíme, jak zadat údaje zadané uživatelem do formuláře do databáze MySql. Dozvíte se, jak se připojit k databázi MySql z kódu webové stránky a jak zpracovávat a vkládat data do databáze.


V minulé lekci jsem vám řekl, jak nainstalovat Denver na váš počítač, jak vytvořit vlastní databázi, uživatele pro ni, jak vytvořit tabulku v databázi a naplnili jsme ji jedním záznamem.

V této lekci si vytvoříme html dokument pro zadávání informací o uživateli a také php soubor, který s těmito informacemi nakládá, který data zpracuje, připojí se k databázi MySql a vloží tam nové záznamy.

Přejdeme od slov k činům, začněme.

Přidejte vlastní data do databáze MySql z webové stránky

První krok: vytvořte html formulář pro zadávání dat

Již od začátku se musíme připravit na práci s php, MySql a testování napsaného kódu na lokálním počítači. Pro tohle:

1. Spusťte na svém počítači Denwer.

2. Otevřete virtuální disk vytvořený Denverem (mám například tento disk "Z"). Otevřete ji, pak: home - localhost - www - tam vytvořte novou složku a pojmenujte ji (já dám název „db1“).

3. Pokud pracujete v Adobe Dreamweaver, tak přejděte do správce webu, tam klikněte na tlačítko „Nový“, jako cestu vyberte cestu k nově vytvořené složce, v poli výše můžete web pojmenovat a poté klikněte Uložit - Hotovo. Po tom všem se vaše složka objeví v pravém podokně aplikace Adobe Dreamweaver.

1. Nyní vytvoříme běžný html soubor (pojmenujeme ho info_form.html a uložíme do právě vytvořené složky db1) a napíšeme tam kód formuláře pro zadávání informací. Naše tabulka uživatelů v databázi new_db má 4 pole, která může uživatel vyplnit (pole id se vyplní automaticky). Na základě toho můžete vytvořit kód takto:

Dokument bez názvu










Zde, v parametru "akce" našeho formuláře, je soubor formulář.php... Bude to soubor handleru, který vytvoříme jako další.

Vytvořme také soubor style.css pro stylování našeho formuláře. Ten je již obsažen v kódu, takže ho zbývá pouze vytvořit, umístit do stejné složky jako html soubor a napsat do něj následující kód:

Text (šířka: 400px; okraj: 0 auto; pozadí: # F8F4B6;) štítek (zobrazení: blok; plovoucí: vlevo; šířka: 150px; odsazení: 0 10px; okraj: 18px 0 0; zarovnání textu: vpravo;) # odeslat (plovoucí: vpravo; okraj: 5px 50px 10px 0;)

Formulář nyní vypadá takto:

Pokud však zadáte data a pokusíte se formulář odeslat, zobrazí se chyba, protože v adresáři scripts neexistuje žádný soubor form.php.

Naším dalším úkolem je vytvoření souboru handleru.

2. Pojďme dovnitř složky db1 vytvořte složku s názvem "skripty"... V něm uložíme všechny naše skripty pro interakci s databází MySql.

Po vytvoření složky vytvořte nový soubor php a uložte jej do složky scripts pod názvem formulář.php.

Než však začnete přímo se souborem obslužného programu informací, musíte se nejprve připojit k naší databázi. Navrhuji pro to vytvořit samostatný soubor a zde je důvod:

S největší pravděpodobností se ve vašem projektu budete muset připojit k databázi MySql nejen z jednoho souboru. Různé soubory projektu obvykle spolupracují s databází.
Je velmi nepraktické do každého takového souboru zapisovat stejný kód připojení k databázi. A pokud je takových souborů například 50 a jednoho krásného dne změníte uživateli heslo a všech těchto 50 souborů budete muset hledat a v každém provádět opravy.
Mnohem pohodlnější je pro připojení použít samostatný soubor, který bude připojen ke každému ze souborů, kde by mělo být napojení na databázi MySql. V tomto případě stačí provést opravy pouze v jednom souboru.

Vytvořme tedy nový php soubor, pojmenujme jej connect.php a vložte jej do složky skripty. Do něj si zapíšeme kód pro připojení k naší databázi MySql a také kód, který bude hlásit chyby, pokud se vyskytnou. Vezměte prosím na vědomí, že jako parametry budete muset zadat své uživatelské jméno, heslo a název databáze. Hostitel musí být localhost.

Chyba při připojování k databázi! ". mysql_error ()."

"); mysql_select_db (" new_db ") // parametr v hranatých závorkách (" název základny, ke které se má připojit ") nebo zemřít ("

Chyba při výběru databáze! ". mysql_error ()."

"); ?>

Nyní přejděte k souboru form.php a připojte k němu soubor connect.php pomocí následujícího kódu:

Pokud se pokusíte odeslat formulář nyní, uvidíte po odeslání prázdnou webovou stránku. To je v pořádku, protože jsme se právě připojili k základně a zatím nic dalšího nezobrazujeme.

Pokud se zobrazí chybová zpráva, zkontrolujte správnost všech parametrů (uživatelské jméno, heslo, název hostitele: localhos, název databáze) a také se ujistěte, že je váš Denver povolen.

3. Úspěšně jsme se připojili k databázi MySql a nyní potřebujeme přijmout údaje zadané do formuláře do našeho správce souborů... K tomu nám pomohou atributy "name", které jsou v html dokumentu přítomny.

K získání dat použijeme speciální proměnná php který nám poskytuje veškeré informace z webového formuláře. Tato proměnná se jmenuje „$ _REQUEST“.

Po připojení souboru connect.php přidejte do souboru form.php následující kód:

$ first_name = $ _REQUEST ["křestní_jméno"]; $ last_name = $ _REQUEST ["last_name"]; $ email = $ _REQUEST ["e-mail"]; $ facebook = $ _REQUEST ["facebook"];

4. Získali jsme data do souboru a vložili je do proměnných. Nyní potřebujete odešlete tato data do naší tabulky databáze MySql... Chcete-li to provést, musíte napsat následující kód níže:

$ insert_sql = "INSERT INTO users (first_name, last_name, email, facebook)". "VALUES (" ($ first_name) "," ($ last_name) "," ($ email) "," ($ facebook) ");"; mysql_query ($ insert_sql);

Zde nejprve vytvoříme dotaz s tím, že potřebujeme vložit příslušné proměnné do odpovídajících polí tabulky „uživatelé“. Tento požadavek vložíme do proměnné „$ insert_sql“. A pak pomocí speciální funkce mysql_query provedeme tento dotaz.

Pokud nyní vyplníte a odešlete formulář a poté se podíváte do tabulky „uživatelé“ vaší databáze, uvidíte nový záznam, který se tam objevil po odeslání.

5. Do tabulky databáze MySql jsme vložili nový záznam z webové stránky. Nyní se chci trochu dotknout formátu, ve kterém jsou naše data vkládána.

Nejprve se musíte postarat o situaci, kdy osoba, která vyplňuje formulář, může na začátku zadávání informací umístit zbytečné mezery. Je třeba je ořezat.

Za druhé, máme pole na Facebooku. Pokud v budoucnu budeme chtít tyto informace zobrazovat jako odkaz, pak musíme dbát na to, aby údaje v tomto poli byly uloženy ve správném formátu (tj. „http://www.facebook.com/ facebook id“). Ne vždy ale uživatel tato data zadá tak, jak potřebujeme. Může zadat: „www.facebook.com/ facebook id“, „facebook.com/ facebook id“ nebo jednoduše „/ facebook id“.

Těmto situacím je třeba se vyhnout. Chcete-li to provést, upravme náš kód. Pomocí funkce odřízneme možné mezery navíc oříznout, a funkce zkontroluje správnost zadané url pro facebook preg_match... Celý kód souboru form.php tedy bude vypadat takto:

Dokument bez názvu Do databáze byl vložen nový záznam!

"; ?>

O funkci preg_match:
Toto je funkce pro vyhledávání s regulárními výrazy.

První parametr v závorce je regulární výraz, druhý je řetězec, který se má hledat.

Funkce vrátí pouze první shodu: 0 - pokud nejsou žádné shody, 1 - pokud existuje shoda.

Nyní zkuste formulář schválně vyplnit tak, že na začátku vyplňování některého z polí uděláte zbytečné mezery a zadáte adresu pro facebook bez http: // nebo dokonce zadáte pouze facebook ID. Odešlete žádost a poté přejděte do databáze a uvidíte, že i přes ne zcela správné vyplnění mají data přesně takovou formu, jakou potřebujeme.

Tím tuto lekci ukončím. Všechny soubory pro tuto lekci si můžete stáhnout ve zdrojovém kódu (jen nezapomeňte změnit parametry na své vlastní v souboru connect.php).

A v další lekci se naučíme, jak získat informace z databáze MySql, vyberte požadované položky a zobrazit je na obrazovce. Abyste nezmeškali další lekci, přihlaste se k odběru aktualizací blogu pomocí formuláře pro přihlášení, který vidíte níže.

Zanechte své komentáře a sdílejte je se svými přáteli pomocí tlačítek sociálních sítí.

Hodně štěstí a uvidíme se v další lekci!

V tomto tutoriálu se podíváme na to, jak vkládat data do databáze přímo z vašich PHP skriptů.

Vkládání dat pomocí SQL

SQL používáte k vkládání dat do databáze stejným způsobem, jako používáte SQL k vytváření databází a tabulek. Syntaxe dotazu SQL je následující:

INSERT INTO TableName (sloupec1, sloupec 2, ...) VALUES (hodnota1, hodnota 2, ...)

Jak vidíte, můžete aktualizovat více sloupců v jednom příkazu SQL jejich zadáním v seznamu odděleném čárkami. Ale samozřejmě můžete také zadat pouze jeden sloupec a jednu hodnotu. Sloupce, které nejsou uvedeny v tomto příkazu SQL, zůstanou prázdné.

Příklad: Vložení nového člověka do tabulky

V tomto příkladu používáme databázi z lekce 18. Řekněme, že chceme vložit osobu do databáze. To může být Gus husa s telefonním číslem 99887766 a datum narození 1964-04-20 .

Příkaz SQL může vypadat takto:

$ strSQL = "INSERT INTO people (Jméno, Příjmení, Telefon, Datum narození) VALUES (" Gus "," Husa "," 99887766 "," 1964-04-20 ")";

Jak vidíte, SQL příkazy mohou být poměrně dlouhé a můžete se snadno ztratit. Proto je lepší napsat příkaz SQL trochu jinak:

strSQL = "INSERT INTO people ("; strSQL = strSQL. "Jméno,"; strSQL = strSQL. "Příjmení," strSQL = strSQL. "Telefon,"; strSQL = strSQL. "narození)"; strSQL = strSQL. "VALUES ("; strSQL = strSQL. "" Gus ","; strSQL = strSQL. "" Husa ","; strSQL = strSQL. "" 99887766 ","; strSQL = strSQL. "" 1964-04-20 ")"; mysql_query ($ strSQL) nebo zemřít (mysql_error ());

Zde je příkaz SQL postaven tak, že příkaz rozděluje na malé části a poté je kombinuje do proměnné $ strSQL.

V praxi není rozdíl v aplikaci jedné nebo druhé metody, ale při práci s velkými tabulkami začíná být extrémně důležité umět "držet stopu", proto zvolte nejvhodnější metodu.

Zkusme následující kód vložit Gus Goose do databáze:

Vkládání dat do databáze // Připojení k databázovému serveru mysql_connect ("mysql.myhost.com", "user", "sesame") nebo zemřít (mysql_error ());// Výběr databáze mysql_select_db ("mydatabase") nebo zemřít (mysql_error ()); // Sestavení příkazu SQL $ strSQL = "INSERT INTO people ("; $ strSQL = $ strSQL. "Jméno,"; $ strSQL = $ strSQL. "Příjmení,"; $ strSQL = $ strSQL. "Telefon,"; $ strSQL = $ strSQL. "Datum narození)"; $ strSQL = $ strSQL. "HODNOTY ("; $ strSQL = $ strSQL. "" Gus ","; $ strSQL = $ strSQL. "" Husa ","; $ strSQL = $ strSQL. "" 99887766 ","; $ strSQL = $ strSQL. "" 1964-04-20 ")"; // Příkaz SQL se provede mysql_query ($ strSQL) nebo zemřít (mysql_error ()); // Uzavřete připojení mysql_close (); ?>

Databáze byla aktualizována!

Ukládání uživatelského vstupu do databáze

Pravděpodobně jste již přišli na to, že pro to můžete vytvořit formulář, jako v lekci 11, a hodnoty z formuláře lze vložit do příkazu SQL. Předpokládejme, že ano jednoduchá forma:

Tento formulář se odešle do souboru vložit.php kde, jak je uvedeno v lekci 11, můžete získat uživatelský vstup tím, že si vyžádáte obsah formuláře. V tomto konkrétním případě může být SQL příkaz takto:

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

Podobně můžete požadovat data pro soubory cookie, relace, řetězce dotazů atd.

Nejčastější začátečnické chyby

Zpočátku se pravděpodobně při pokusu o aktualizaci databáze zobrazí spousta chybových zpráv. Při práci s databází nejsou žádné chyby zcela nepřijatelné. Nesprávně umístěná čárka může znamenat, že databáze není aktualizována, a zobrazí se chybová zpráva. Níže popisujeme nejčastější chyby.

Neplatný datový typ

Je důležité, aby se data a datový typ sloupce shodovaly. Každý sloupec může obsahovat data určitého typu. Následující snímek obrazovky ukazuje datové typy tabulky „lidé“ z našeho příkladu.

Pokud se například pokusíte vložit text nebo číslo do datového pole, dojde k chybě. Datový typ tedy nastavte co nejpřesněji.

Nejběžnější typy dat jsou uvedeny níže:

Význam Datový typ Velikost
CHR
Text nebo kombinace textu a čísel. Lze jej také použít pro čísla, která se nepoužívají ve výpočtech (např. telefonní čísla). Až 255 znaků – buď délka uvedená v „Délce“
TEXT
Velké bloky textu nebo kombinace textu a čísel. Až 65 535 znaků
INT
Numerická data pro matematické výpočty. 4 byty
DATUM
Data ve formátu RRRR-MM-DD 3 bajty
ČAS
Čas ve formátu hh: mm: ss 3 bajty
ČAS SCHŮZKY
Datum a čas ve formátu RRRR-MM-DD hh: mm: ss 8 bajtů

Příkazy SQL s uvozovkami nebo zpětnými lomítky

Pokud se pokusíte vložit text obsahující jednoduché uvozovky ("), dvojité uvozovky (") nebo zpětné lomítko (\), záznam nebude vložen do databáze. Řešením je nahradit zpětná lomítka před znaky, které by měly být mnemonizovány při vkládání do databázových dotazů.