Přidání dat do sql php tabulky. Jak zapisovat do databáze MySQL pomocí kódu PHP
A daný
. Nyní si povíme jak přidat obrázky do databáze MySQL pomocí formuláře pomocí PHP.
Vytvoření pole v databázi MySQL pro přidání obrázku
Na začátek chci říct, že pro ukládání obrázků do databáze MySQL Jedno z polí tabulky je nutné definovat jako derivaci typu BLOB.
Zkratka BLOB znamená binární velký objekt. Typ úložiště dat BLOB má několik možností:
- TINYBLOB - Může uložit až 255 bajtů
- BLOB může uložit až 64 kilobajtů informací
- MEDIUMBLOB – až 16 megabajtů
- LONGBLOB až 4 gigabajty
Pro uložení obrazového souboru do databáze musíte načíst soubor do proměnné a vytvořit dotaz pro přidání dat do tabulky.
Příprava formuláře na stránce pro přidání obrázku do databáze MySQL
V mém případě to byl úkol přidat dva obrázky do databáze pomocí formuláře pomocí PHP. Máme formulář se dvěma poli a tlačítkem Odeslat:
form name=”form1″ method=”post” action=”add_image.php”
enctype="multipart/form-data"
Dovolte mi připomenout, že atribut akce určuje soubor, který bude provádět načítání obrazových souborů. Atribut enctype označuje, jak je zakódován obsah formuláře a informace o nahrání souboru. Podívejte se, jak správně vyplnit atribut enctype abychom se vyhnuli.
Poznámka: podpora pro nahrávání více souborů byla zavedena ve verzi 3.0.10.
Psaní PHP kódu pro uložení obrázku do databáze MySQL
Protože posíláme dva soubory v atributu jméno za slovem označujeme „userfile“ hranatými závorkami, čímž dáváme najevo, že posíláme několik souborů pomocí pole obsahujícího atributy souboru:
$_FILES['userfile']['name']
Původní název souboru na klientském počítači.
$_FILES['userfile']['type']
Typ MIME souboru, pokud prohlížeč tyto informace poskytl.
Příklad: "image/gif" .
$_FILES['userfile']['size']
$_FILES['userfile']['tmp_name']
Název dočasného souboru, pod kterým byl stažený soubor uložen na server.
Jak získat hodnoty každého souboru?
Předpokládejme například, že jsou odeslány soubory s názvem /home/test/1.jpg a /home/test/2.jpg.
V tomto případě $_FILES[‘userfile’][‘name’]
bude obsahovat hodnotu 1.jpg,
a $_FILES[‘userfile’][‘name’]
- hodnota 2.jpg
Podobně $_FILES[‘userfile’][‘velikost’] bude obsahovat hodnotu velikosti souboru 1.jpg a tak dále. Nyní se podíváme na kód souboru add_image.php, který byl uveden v atributu form akce.
1024*1024||$image_size==0) ( $ErrorDescription="Každý obrázek by neměl přesáhnout 1 MB! Obrázek nelze přidat do databáze."; return ""; ) // Pokud soubor dorazil, zkontrolujte, zda grafiku // to (z bezpečnostních důvodů) if(substr($_FILES["userfile"]["type"][$num], 0, 5)=="image") ( //Přečíst obsah souboru $image=file_get_contents($_FILES ["userfile"]["tmp_name"][$num] //Escape speciální znaky v obsahu souboru $image=mysql_escape_string($image return $image )else( ErrorDescription=); "Nenačetli jste obrázek, takže jej nelze přidat."; return "" ) )else( $ErrorDescription="Nenahráli jste obrázek, pole je prázdné, takže soubor nelze přidat do databáze." ."; return ; ) return $obrazek; ) ?>
V tomto článku jsme tedy hovořili o tom, jak uložit obrázek do databáze MySQL , pomocí PHP.
V tomto článku se podíváme na 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. Protože VELMI často musíte přidat do tabulky nové záznamy a udělejte to automaticky, pak je nutné tento materiál prostudovat.
Pro začátek 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 se příkaz " VLOŽIT DO", dále název tabulky, do které záznam vkládáme. Dále jsou v závorce názvy polí, která chceme vyplnit. A dále v závorce za slovem " hodnoty"Začneme vypisovat hodnoty polí, která jsme vybrali. Po provedení tohoto dotazu se v naší tabulce objeví nový záznam.
Někdy vyžadováno aktualizovat záznam v tabulce, k tomu je následující SQL dotaz:
UPDATE user SET login = "TestUser2", pass="1234560" WHERE login="TestUser"
Tento dotaz je složitější, protože má konstrukci " KDE", ale o tom více níže. Nejprve přichází příkaz " AKTUALIZOVAT", pak název tabulky a za " SOUBOR"Popisujeme hodnoty všech polí, která chceme změnit. Bylo by to jednoduché, ale vyvstává otázka: " Který záznam by měl být aktualizován?". To je důvod, proč existuje" KDE". V tomto případě aktualizujeme záznam, pole " přihlášení"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 kontrol rovnosti existují také nerovnosti a logické operace: A A NEBO.
AKTUALIZOVAT SET login = "TestUser2", pass="1234560" WHERE id< 15 AND login="TestUser"
Dáno SQL dotaz bude tyto záznamy aktualizovat, id kterých je méně 15 A pole" přihlášení"záležitosti" TestUser"Doufám, že jsi přišel na design" KDE"Protože je to velmi důležité. Přesně." KDE"použito, 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 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 záznamy smazat. Dále popíšeme konstrukci "KDE". Pokud záznam splňuje popsané podmínky, bude smazán. Opět pozor, v závislosti na počtu záznamů vyhovujících stav po " KDE“, libovolný počet z nich lze smazat.
V tomto tutoriálu se podíváme na to, jak vložit 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 SQL dotazu je:
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. 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 můžete vidět, příkazy SQL mohou být poměrně dlouhé a může být snadné ztratit přehled. 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) or die(mysql_error());
Zde je příkaz SQL konstruován rozdělením věty na malé části a jejich následným spojením do proměnné $strSQL.
V praxi není rozdíl v použití jedné nebo druhé metody, ale při práci s velkými tabulkami se schopnost "držet stopu" stává extrémně důležitou, proto zvolte nejvhodnější metodu.
Zkusme následující kód vložit Gus Goose do databáze:
?>
DB aktualizováno!
Ukládání uživatelského vstupu do databáze
Řekněme, že máte jednoduchý formulář: Uložit Tento formulář se odešle do souboru
vložit.php
, kde můžete, jak je uvedeno v lekci 11, obdržet uživatelský vstup tím, že si vyžádáte obsah formuláře. V tomto konkrétním případě by příkaz SQL mohl vypadat takto:
strSQL = "INSERT INTO people(FirstName) values("" . $_POST["FirstName"] . "")"
Podobně můžete požadovat data ze souborů cookie, relací řetězce dotazů atd.
Nejčastější začátečnické chyby
Zpočátku se pravděpodobně při pokusu o aktualizaci databáze zobrazí hromada chybových zpráv. Při práci s databází nejsou povoleny vůbec žádné chyby. Nesprávná čá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 vzájemně 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 proto nastavte co nejpřesněji. | Nejběžnější typy dat jsou uvedeny níže: |
---|---|---|
Význam |
Text nebo kombinace textu a čísel. Lze použít i pro čísla nepoužívaná ve výpočtech (např. telefonní čísla). | Až 255 znaků – nebo 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 bajty |
DATUM |
Data ve formátu RRRR-MM-DD | 3 bajty |
ČAS |
Čas ve formátu hh:mm:ss | 3 bajty |
DATETIME |
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, který obsahuje jednoduché uvozovky ("), dvojité uvozovky (") nebo zpětné lomítko (\), záznam nebude vložen do databáze. Řešením by bylo nahradit zpětná lomítka před znaky, které musí být při vkládání do databázových dotazů mnemonizovány.
V tomto příspěvku vám chci říct, jak přenést zadaná data do formuláře do Databáze. A tak vytvoříme jednoduchý formulář, kde budeme mít dvě pole: jméno uživatele a jeho email:
Tento formulář lze použít k registraci nového uživatele, k rozesílání novinek, shromažďování statistik, nebo k čemukoli... Obecně do tohoto formuláře uživatel zadává své údaje: jméno a email, klikne na tlačítko a následně údaje přejde do skriptu PHP:
$jméno = $_POST["jméno"]; $email = $_POST["e-mail"]; $result = mysqli_query("INSERT INTO user (jméno, email) VALUES ("$name", "$email")"); if ($result) ( 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 (napsaného 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 připojeny k databázi Jak se připojit k databázi, napsal jsem v tomto vlákně: . Samotná žádost vypadá takto:
$result = mysqli_query("INSERT INTO user (jméno, email) VALUES ("$name", "$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 vyskytnou 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!
*** *** *** *** ***
V případě potřeby 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. Již máme hotový skript (napsaný výše), nyní jen přidáme pole Vaše město, nazveme proměnnou: $city . A tak dále ve formuláři pro zadávání dat po:
Váš email:
přidat:
Vaše město:
Ve skriptu php po:
$email = $_POST["e-mail"];
přidat:
$city = $_POST["město"];
A samozřejmě to přidáme také do požadavku, takto:
$result = mysqli_query("INSERT INTO user (jméno, email, město) VALUES ("$name", "$email", "$city")");
U toho byste měli skončit:
Vstupní formulář:
Skript:
$name = $_POST["jméno"]; $email = $_POST["e-mail"]; $city = $_POST["město"]; $result = mysqli_query("INSERT INTO user (jméno, email, město) VALUES ("$name", "$email", "$city")"); 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ší...
Poslední aktualizace: 1.11.2015
Chcete-li přidat data, použijte výraz "INSERT":
$query ="VLOŽTE DO HODNOT zboží(NULL, "Samsung Galaxy III","Samsumg"");
Příkaz INSERT vloží do tabulky jeden řádek. Za klíčovým slovem INTO je uveden název tabulky a za VALUES je v závorkách uvedena sada hodnot pro všechny sloupce. Protože máme v tabulce tři sloupce, uvádíme tři hodnoty.
Protože v předchozím tématu jsme při vytváření tabulky zadali následující pořadí sloupců: id, name, company, v tomto případě je pro sloupec id předána hodnota NULL, pro jméno „Samsung Galaxy III“ a „Samsumg“ pro společnost.
Protože je sloupec id definován jako AUTO_INCREMENT, nemusíme mu dávat konkrétní číselnou hodnotu a můžeme předat hodnotu NULL a MySQL přiřadí sloupci další dostupnou hodnotu.
Nyní se podívejme na přidávání dat pomocí příkladu. Vytvoříme soubor create.php s následujícím obsahem:
Údaje přidány"; ) // ukončení připojení mysqli_close($link); ) ?>
Přidat nový model
Zde je kód pro interakci s databází kombinován s funkčností formulářů: pomocí formuláře zadáváme data, která mají být přidána do databáze.
Zabezpečení a MySQL
Zde jsme použili funkci mysqli_real_escape_string(). Používá se k escapování znaků v řetězci, který je pak použit v dotazu SQL. Jako parametry bere objekt připojení a řetězec, který má být escapován.
Proto ve skutečnosti používáme znak escape dvakrát: nejprve pro výraz SQL pomocí funkce mysqli_real_escape_string() a poté pro html pomocí funkce htmlentities(). To nám umožní chránit se před dvěma typy útoků najednou: útoky XSS a injekcemi SQL.