Počítače Okna Internet

Použití mysql v php. Základy práce s MySQL v PHP. Připojení k databázi MySQL

MySQL je typ relační databáze. MySQL je server, ke kterému se mohou připojit různí uživatelé.

Když se připojujete k internetu, zadáváte své uživatelské jméno a heslo a také název serveru, ke kterému se připojujete? Stejný systém se používá při práci s MySQL.

Další bod: co je to relační databáze? Relační znamená tabulkový. Slavný tabulkový editor Microsoft Excel je ve skutečnosti editorem relačních databází.

Připojení k serveru MySQL

PHP používá funkci mysqli_connect () pro připojení k serveru MySQL. Tato funkce přebírá tři argumenty: název serveru, uživatelské jméno a heslo.

Funkce mysqli_connect () vrací identifikátor připojení, je uložen do proměnné a později použit pro práci s databázemi.

Kód připojení k serveru MySQL:

$ link = mysqli_connect ("localhost", "root", "");

V tomto případě pracuji pro místní počítač na Denwere, takže název hostitele je localhost, uživatelské jméno je root a neexistuje žádné heslo.

Po dokončení práce s MySQL také musíte připojení ukončit. K uzavření spojení se používá funkce mysqli_close (). Rozšíření příkladu:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_close (odkaz $);

Zde jsme zkontrolovali pravdivost identifikátoru připojení, pokud je s naším připojením něco v nepořádku, pak se program nespustí, funkce die () zastaví jeho provádění a zobrazí chybové hlášení v prohlížeči.

Chyby připojení

Ke kontrole připojení se používají následující funkce:

  • mysqli_connect_errno () - Vrací kód chyby posledního pokusu o připojení. Vrátí nulu, pokud nejsou žádné chyby.
  • mysqli_connect_error () – Vrací popis poslední chyby při připojování k serveru MySQL.
definovat ("HOST", "localhost"); definovat ("DB_USER", "root"); definovat ("DB_PASSWORD", ""); definovat ("DB", "tester"); $ odkaz = mysqli_connect (HOST, DB_USER, DB_PASSWORD, DB); / * zkontrolujte připojení * / if (mysqli_connect_errno ()) (printf ("Připojení se nezdařilo:% s \ n", mysqli_connect_error ()); ukončete ();) else (printf ("Připojení se nezdařilo:% s \ n" , mysqli_get_host_info (odkaz $));)

Mysqli_get_host_info () vrací řetězec obsahující typ použitého připojení.

Všimněte si také, že pomocí příkazu define jsem uložil všechny parametry připojení do konstant. Když píšete velké projekty a k MySQL serveru bude připojeno mnoho souborů, je vhodné uložit parametry připojení do samostatného souboru a vložit jej pomocí funkce include or required.

Výběr databáze

Na serveru MySQL může být více databází. Nejprve si musíme vybrat základnu, kterou pro práci potřebujeme. PHP k tomu má ve funkci mysqli_connect () ještě jeden parametr – název databáze.

Vytvořil jsem jej na svém počítači přes phpMyAdmin s názvem tester. Připojujeme se k němu:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); mysql_close (odkaz $);

Vybrali jsme tedy databázi, se kterou budeme pracovat. Ale jak víme, relační databáze se skládá z tabulek a naše databáze ještě tabulky nemá. Databáze je vytvořena prázdná, žádné tabulky. Tabulky k němu musí být přidány samostatně. Přidejme k tomu tabulku pomocí PHP.

Vytvořte tabulku

V názvu databází MySQL část SQL znamená Structured Query Language, což se překládá jako strukturovaný dotazovací jazyk. Na jazyk SQL napíšeme dotazy a z programu PHP je pošleme na MySQL server.

K vytvoření tabulky nám stačí zadat příkaz CREATE TABLE. Vytvořme tabulku s názvem uživatelé, do jejíchž sloupců budou uložena loginy (sloupec login) a hesla (sloupec hesla) uživatelů.

$ dotaz = "CREATE TABLE uživatelé (přihlášení VARCHAR (20), heslo VARCHAR (20))";

V tomto kódu jsme přiřadili proměnné $ query řetězec textu, který představuje SQL dotaz. Vytvoříme tabulku s názvem users, která obsahuje dva sloupce login a password, přičemž oba mají datový typ VARCHAR (20). O datových typech si povíme později, zatím jen poznamenám, že VARCHAR (20) je řetězec o maximální délce 20 znaků.

K odeslání našeho dotazu na MySQL server používáme PHP funkci mysqli_query (). Tato funkce vrací kladné číslo, pokud byla operace úspěšná, a false, pokud došlo k chybě (syntaxe požadavku je nesprávná nebo program nemá oprávnění požadavek provést).

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "CREATE TABLE uživatelé (přihlášení VARCHAR (20), heslo VARCHAR (20))"; mysqli_query ($ dotaz); mysqli_close (odkaz $);

SQL dotaz nemusí být zapsán do proměnné, může být zapsán přímo jako argument funkce mysql_query (). Jen ten kód vypadá čitelněji.

Tento skript má jednu nevýhodu – do prohlížeče nic nevypisuje. Přidejme zprávu:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "CREATE TABLE uživatelé (přihlášení VARCHAR (20), heslo VARCHAR (20))"; if (mysqli_query ($ dotaz)) echo "Tabulka byla vytvořena."; else echo "Tabulka nebyla vytvořena."; mysqli_close (odkaz $);

Pokud znovu spustíme tento skript pro spuštění, uvidíme v prohlížeči zprávu: "Tabulka nebyla vytvořena." Faktem je, že tabulka byla vytvořena při prvním spuštění a není možné znovu vytvořit tabulku se stejným názvem. Setkáváme se s chybovou situací, takže je čas promluvit si o zpracování chyb při práci s MySQL.

Chyba při zpracování

Při ladění programu můžeme potřebovat přesné informace o chybě. Když dojde k chybě v MySQL, databázový server nastaví číslo chyby a řetězec popisující chybu. PHP má speciální funkce pro přístup k těmto datům.

  • mysqli_errno () - Vrací číslo chyby.
  • mysqli_error () - Vrací řetězec popisující chybu.

Nyní do našeho skriptu přidáme funkci mysql_error ():

$ link = mysql_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "CREATE TABLE uživatelé (přihlášení VARCHAR (20), heslo VARCHAR (20))"; if (mysqli_query ($ dotaz)) echo "Tabulka byla vytvořena."; else echo "Tabulka nebyla vytvořena:" .mysqli_error (); mysqli_close (odkaz $);

Nyní náš skript vrátí do prohlížeče řádek: "Tabulka není vytvořena: Tabulka" uživatelé "již existuje".

Spuštění stolu

Takže teď máme stůl, který nepotřebujeme. Je čas naučit se mazat tabulky z databáze.

Chcete-li zrušit tabulku, použijte příkaz DROP TABLE následovaný názvem tabulky.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "uživatelé DROP TABLE"; if (! mysqli_query ($ dotaz)) echo "Chyba při mazání tabulky:" .mysqli_error (); else echo "Tabulka byla smazána."; mysqli_close (odkaz $);

Výsledky

Takže jsme zvládli základy MySQL. Co jsme se naučili dělat:

  • Připojte se k databázi MySQL pomocí funkce mysqli_connect ().
  • Uzavřete připojení k serveru MySQL pomocí funkce mysqli_close ().
  • Poslat SQL dotaz s na server MySQL pomocí funkce mysqli_query ().
  • Naučili jsme se SQL dotaz pro vytvoření tabulky: vytvořit tabulku.
  • Naučili jsme se SQL dotaz pro zrušení tabulky: drop table.
  • Naučili jsme se, jak zacházet s chybami pomocí funkcí mysqli_errno () a mysqli_error ().

Poté se blíže podíváme na datové typy MySQL.

Přečetli jsme si následující lekci:

Svou základnu jsem pojmenoval „phptest“. Po kliknutí na tlačítko "Vytvořit" byste měli být automaticky přeneseni do vámi vytvořené databáze.

Vytvořte tabulku v databázi

Ani v tomto postupu není nic složitého. Vytvořme si tabulku, do které budeme ukládat nadpis našich článků a samotný text:

Jak můžete vidět v počtu polí, dal jsem číslo 3, proč? Musíme totiž vytvořit dvě pole, jedno pro nadpis a text. Jde o to, že tabulka v databázi musí mít jedno pole navíc. Proč? Toto pole je náhradní identifikační číslo, (to znamená, že tak nějak počítáme naše řádky v tabulce), takže pro každý řádek tabulky dostaneme jedinečné číslo. To je užitečné pro nalezení požadovaného řetězce v databázi. Toto pole se obvykle nazývá id a je mu vystaveno AUTO_INCREMENT(Níže ukážu, kde je vystavena). AUTO_INCREMENT umožňuje přiřadit každému řádku jedinečné číslo, v databázové tabulce tak nenajdete záznam se stejným číslem!

po vyplnění názvu a počtu polí stiskněte "OK" se dostaneme na stránku pro vytváření polí. Přiznám se, že moc nerozumím tomu, co dělám při vytváření polí, ale to mi nebrání s nimi pracovat. Vyplňte takto:

A vyplňte dvě pole, která potřebujeme:

Proč jen dva? Protože první pole ID vyplní automaticky AUTO_INCREMENT. Klikněte na "OK". Nyní na záložce "Přehled" můžete vidět řádek, který jsme vytvořili v tabulce:

Naučili jsme se vytvářet tabulky a řádky přes panel phpmyadmin, to už je pokrok Mimochodem, chci poznamenat, že rozhraní tohoto panelu je intuitivní, můžete tam snadno strkat tlačítka a zjistit, co je co

Je čas naučit se vytvářet řádky pro mazání a aktualizaci ve vytvořených tabulkách pomocí php. Abyste lépe vnímali, co vám říkám, napíšeme malý admin panel webu a já vám po cestě řeknu, co a jak.

Výstup záznamů z databáze

Začněme tím, protože při vytváření projektu je potřeba proces vizuálně vidět a bez výstupu to jde jen velmi těžko (budu pracovat se souborem test.php, nebuďte překvapeni, když uvidíte odkazy na tento soubor v kódu). Jak se stáhneme? Nejprve se potřebujeme připojit k databázi, po cyklu do while (Learn PHP - Loops) vytáhneme záznamy z databáze. Začněme

  • Připojení k databázi

Jak se provádí spojení? Pozor na syntaxi:

mysql_select_db (název databáze, mysql_connect (server, uživatelské jméno databáze, uživatelské heslo databáze));

Název databáze, uživatel serveru a heslo jsou vytvořeny vámi nebo poskytnuty vaším hostitelem. Například lokální server, některá data si vytvoříte sami, nebo využijete již vytvořená. Takto budou vypadat připojení k databázi, kterou jsem vytvořil:






// PŘIPOJENÍ K DATABÁZI (DB)

Server, uživatel a heslo byly vytvořeny standardně (v tomto případě lze říci, že téměř všechna data nám poskytuje hostitel). Ze svých údajů jsem uvedl pouze název databáze. Mimochodem, toto je php kód, a proto musí být ve speciálních závorkách ()

  • Výstup dat

Potřebujeme zobrazit data z tabulky stránek. Pozor na syntaxi výstupu:

$ result = mysql_query ("SELECT pro extrakci názvu tabulky v databázi");

První řádek nám umožňuje určit, které sloupce potřebujeme vytáhnout a ze které databáze.

Druhý řádek vloží vše, co najde, do proměnné ...

POZORNOST Je zde několik bodů, které bych rád objasnil. Pojďme vyřešit několik problémů:

  • Musíme vytáhnout všechna pole ze stolu.

Jak vytáhnu všechna pole z tabulky stránek? takhle:

$ result = mysql_query ("VYBRAT * ZE stránky");
$ myrow = mysql_fetch_array ($ výsledek);

Možná jste si všimli, že jsem za SELECT vložil hvězdičku (*). Hvězdička znamená, že potřebuji extrahovat všechna pole z tabulky

  • Stačí nám vytáhnout ze stolu jedno pole

Jak vytáhnout z tabulky pouze textové pole? takhle:

$ result = mysql_query ("VYBRAT text ZE stránky");
$ myrow = mysql_fetch_array ($ výsledek);

Aby bylo možné vytáhnout ne všechna pole, ale jen některá, je nutné za SELECT vypsat požadovaná pole oddělená čárkami.

  • Potřebujeme vytáhnout pole ne ze všech tabulek, ale pouze z jednoho řádku

Jak dostanu všechna pole z prvního řádku? Víme, že první řádek má id rovné jedné, použijme tuto znalost:

Po SELECTu jsem vysvětlil, která pole je třeba extrahovat, oddělil čárkami a přidal nový řádek WHERE (což znamená "kde") id je 1. Vytáhnu tedy pole, která potřebuji z řádku, kde id je jedna

Nuže, začneme vytvářet výstupy našich článků? Zobrazíme pouze záhlaví, začněme:


$ myrow = mysql_fetch_array ($ výsledek);

dělat
{
echo "". $ myrow."
";
}

Co jsme udělali? Vytáhli jsme z tabulky dvě pole, id a title. Dále jsme spustili smyčku do while (Learning PHP - Loops) a vytvořili odkazy pomocí dat, která byla vyjmuta z databáze. Data jsou uložena v proměnné $ myrow, tato proměnná je pole, klíče k poli jsou názvy našich polí v databázi. Co se stalo:

K dispozici je výstup hlaviček, nyní uspořádejme výstup kompletních zpráv po kliknutí na odkaz s hlavičkou. Chcete-li to provést v jednom souboru, přidejte podmínky if () ():

// PŘIPOJENÍ K DATABÁZI (DB)
$ nameDB = "phptest"; // Název databáze
$ nameSERVER = "localhost"; // Server
$ nameUSER = "root"; // Uživatelské jméno databáze
$ passUSER = ""; // Heslo uživatele databáze
mysql_select_db ($ nameDB, mysql_connect ($ nameSERVER, $ nameUSER, $ passUSER));
// PŘIPOJENÍ K DATABÁZI (DB)

// ZOBRAZENÍ ZÁHLAVÍ
if (! isset ($ _ GET ["id"]))
{
$ vysledek = mysql_query ("SELECT id, titulek FROM stranky");
$ myrow = mysql_fetch_array ($ výsledek);

dělat
{
echo "". $ myrow."
";
}
while ($ myrow = mysql_fetch_array ($ výsledek));
}
// ZOBRAZENÍ ZÁHLAVÍ

// ZOBRAZIT CELÝ TEXT
if (isset ($ _ GET ["id"]))
{

$ myrow = mysql_fetch_array ($ výsledek);

echo $ myrow;
}
// ZOBRAZIT CELÝ TEXT
?>

Přidal jsem dvě podmínky. Seznam s hlavičkami uvidíme pouze v případě, že globální proměnná $ _GET ["id"] neexistuje. Úplný text uvidíme pouze v případě, že tato proměnná existuje. V tomto případě zobrazíme pouze jeden záznam, který potřebujeme z databáze. Zde je to, co máme:

Nyní si myslím, že je čas naučit se přidávat nové řádky do tabulky.

Přidávání dat do databáze

Začněme přidávat vytvořením formuláře, zde je část kódu, který je třeba přidat na konec našeho souboru:

// FORM PŘIDAT ZÁZNAMY
if (isset ($ _ GET ["přidat")))
{
echo"







";
}
// FORM PŘIDAT ZÁZNAMY

Tento formulář se zobrazí pouze v případě, že zde bude globální proměnná $ _GET ["add"], takže tam, kde je vlákno dole, je potřeba vložit odkaz pro přidání nového článku. Nejlepší způsob, jak to udělat, je v kódu pro zobrazení záhlaví, můžete také upravit podmínku pro zobrazení našich záhlaví takto:

// ZOBRAZENÍ ZÁHLAVÍ
if (! isset ($ _ GET ["id"]) AND! isset ($ _ GET ["add"]))
{
$ vysledek = mysql_query ("SELECT id, titulek FROM stranky");
$ myrow = mysql_fetch_array ($ výsledek);

dělat
{
echo "". $ myrow."
";
}
while ($ myrow = mysql_fetch_array ($ výsledek));

echo"


Přidat příspěvek ";
}
// ZOBRAZENÍ ZÁHLAVÍ

Upravil jsem podmínku tak, že se při zobrazení formuláře nezobrazuje seznam záhlaví, stalo se toto:

$ result = mysql_query ("INSERT INTO název databázové tabulky (DB pole 1, DB pole 2) VALUES (" data 1 "," data 2 ")");

Nyní napíšeme handler pro náš mini admin panel a vše pochopíte. Zde je část kódu, který jsem zveřejnil hned po připojení k databázi:

// PŘIDAT ZÁZNAMY

{

záhlaví ("umístění: test.php");
výstup;
}
// PŘIDAT ZÁZNAMY

Podmínkou je globální proměnná $ _POST, to znamená, že pokud vyplníme formulář, klikneme na tlačítko "Přidat příspěvek", tak se naše podmínka spustí. Pole title bude obsahovat data z globální proměnné $ _POST a textové pole - $ _POST. Dále bude fungovat řádek záhlaví ("location: test.php"), který umožňuje přesměrovat uživatele na jinou stránku, v tomto případě test.php bude tato stránka. A výstup z linky; přeruší provádění dalších skriptů. Co se stalo:

Editace dat v databázi

Abychom mohli upravit konkrétní záznam v naší databázi, přirozeně potřebujeme určit, který záznam je potřeba upravit... Navrhuji zobrazit tlačítko pro úpravy v plném textovém výstupním kódu, upravme jej:

// ZOBRAZIT CELÝ TEXT
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("VYBRAT text ZE stránky WHERE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ výsledek);

echo $ myrow;
echo"


Upravit příspěvek ";
}
// ZOBRAZIT CELÝ TEXT


if (isset ($ _ GET ["edd")))
{

$ myrow = mysql_fetch_array ($ výsledek);

echo"








";
}
// ÚPRAVA ZÁZNAMŮ FORMULÁŘE

Tento kus kódu jsem přidal po formuláři pro přidání záznamů. Tento formulář je téměř stejný jako přidávání příspěvků. Jak vidíte, přepracoval jsem atributy názvu a přidal atribut value. Do tohoto atributu vkládám data, která jsem vynesl z databáze. Je zde také neviditelné pole. Je potřeba k odeslání identifikátoru záznamu do souboru handler.

Nyní, aby při zobrazení tohoto formuláře na obrazovce nebyl žádný seznam záhlaví, opravíme podmínku:

// ZOBRAZENÍ ZÁHLAVÍ

{
$ vysledek = mysql_query ("SELECT id, titulek FROM stranky");
$ myrow = mysql_fetch_array ($ výsledek);

dělat
{
echo "". $ myrow."
";
}
while ($ myrow = mysql_fetch_array ($ výsledek));

echo"


Přidat příspěvek ";
}
// ZOBRAZENÍ ZÁHLAVÍ

Je čas zjistit, jak jsou záznamy v databázi upravovány. Zde je syntaxe:

Nyní napíšeme handler. Zde je část kódu, který jsem přidal hned po obsluze přidávání záznamů:

// ÚPRAVA ZÁZNAMŮ

{

záhlaví ("umístění: test.php");
výstup;
}
// ÚPRAVA ZÁZNAMŮ

Podle podmínky je vidět, že handler bude spuštěn pouze v případě, že klikneme na tlačítko "upravit příspěvek". Následuje aktualizace databáze. Do pole title uvedeme hodnotu globální proměnné $ _POST a do textového pole - $ _POST. Upravíme řádek, jehož id se rovná globální proměnné $ _POST. Poté přesměrujeme uživatele zpět na seznam záhlaví:

Mazání záznamů z databáze

No, poslední věc, kterou musíme studovat, je mazání .. Je to jednodušší než všichni ostatní, takže věnujte pozornost syntaxi:

Abyste mohli smazat nějaké záznamy, musíte někam do vlákna vložit odkaz, pomocí kterého může uživatel smazat nějaký záznam ... tento odkaz umístěme do výstupu plného textu příspěvku:

// ZOBRAZIT CELÝ TEXT
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("VYBRAT text ZE stránky WHERE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ výsledek);

echo $ myrow;
echo"


Upravit příspěvek ";
echo"
Smazat příspěvek ";
}
// ZOBRAZIT CELÝ TEXT

Výsledek práce

Zde je úplný kód pro dnešní příspěvek:

// PŘIPOJENÍ K DATABÁZI (DB)
$ nameDB = "phptest"; // Název databáze
$ nameSERVER = "localhost"; // Server
$ nameUSER = "root"; // Uživatelské jméno databáze
$ passUSER = ""; // Heslo uživatele databáze
mysql_select_db ($ nameDB, mysql_connect ($ nameSERVER, $ nameUSER, $ passUSER));
// PŘIPOJENÍ K DATABÁZI (DB)

// PŘIDAT ZÁZNAMY
if (isset ($ _ POST ["title_post")] AND isset ($ _ POST ["text_post"]))
{
$ result = mysql_query ("INSERT INTO page (název, text) VALUES (" $ _POST "," $ _ POST ")");
záhlaví ("umístění: test.php");
výstup;
}
// PŘIDAT ZÁZNAMY

// ÚPRAVA ZÁZNAMŮ
if (isset ($ _ POST ["title_post_edd"]) AND isset ($ _ POST ["text_post_edd"]))
{
$ result = mysql_query ("AKTUALIZACE SET page SET title=" (! JAZYK: $ _ POST", text="$_POST" WHERE id="$_POST"");!}
záhlaví ("umístění: test.php");
výstup;
}
// ÚPRAVA ZÁZNAMŮ

// SMAZAT ZÁZNAMY
if (isset ($ _ GET ["del"]))
{
$ result = mysql_query ("DELETE FROM page WHERE id =" $ _ GET "");
záhlaví ("umístění: test.php");
výstup;
}
// SMAZAT ZÁZNAMY

// ZOBRAZENÍ ZÁHLAVÍ
if (! isset ($ _ GET ["id"]) AND! isset ($ _ GET ["add"]) AND! isset ($ _ GET ["edd"]))
{
$ vysledek = mysql_query ("SELECT id, titulek FROM stranky");
$ myrow = mysql_fetch_array ($ výsledek);

dělat
{
echo "". $ myrow."
";
}
while ($ myrow = mysql_fetch_array ($ výsledek));

echo"


Přidat příspěvek ";
}
// ZOBRAZENÍ ZÁHLAVÍ

// ZOBRAZIT CELÝ TEXT
if (isset ($ _ GET ["id"]))
{
$ result = mysql_query ("VYBRAT text ZE stránky WHERE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ výsledek);

echo $ myrow;
echo"


Upravit příspěvek ";
echo"
Smazat příspěvek ";
}
// ZOBRAZIT CELÝ TEXT

// FORM PŘIDAT ZÁZNAMY
if (isset ($ _ GET ["přidat")))
{
echo"







";
}
// FORM PŘIDAT ZÁZNAMY

// ÚPRAVA ZÁZNAMŮ FORMULÁŘE
if (isset ($ _ GET ["edd")))
{
$ result = mysql_query ("SELECT * FROM page WHERE id =" $ _ GET "");
$ myrow = mysql_fetch_array ($ výsledek);

echo"








";
}
// ÚPRAVA ZÁZNAMŮ FORMULÁŘE
?>

Závěr

Materiál se ukázal být poměrně složitý. Ale! Možná jste si všimli, že jsem použil pouze informace, které jsem uvedl dříve. To znamená, že s těmito znalostmi můžete vytvářet ty nejjednodušší projekty v php! Pokud jste toto vše zvládli, pak můžete hrdě prohlásit, že jste začínající programátor! Nyní můžete začít vytvářet své první cms. Máte-li nějaké dotazy a s největší pravděpodobností existují, zeptejte se, pomůžu vám, jak jen budu moci! Hodně štěstí, pro dnešek mám všechno!

P.S.: Co je soubor mdf? Jak to otevřít? Jak to mám otevřít? Tyto a mnohé otázky lze zodpovědět na adrese voprosi4ek.ru

Naučili jsme se, jak se připojit k serveru MySQL, vybrat databázi, se kterou budeme pracovat, naučili jsme se funkci PHP při odesílání dotazů na server MySQL, naučili jsme se dva jednoduché dotazy (vytvoření a smazání tabulky) a naučili jsme se ukončit připojení.

Nyní se ponoříme hlouběji do dotazů MySQL. Pojďme tedy začít!

Vytvoření tabulky - CREATE TABLE

Nyní máme prázdnou databázi, nejsou v ní žádné tabulky. Nejprve si tedy vytvoříme tabulku. Jak na to už víme z prvního dílu.

Zde je kód skriptu, který vytvoří desku, kterou potřebujeme:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "CREATE TABLE uživatelé (přihlášení VARCHAR (20), heslo VARCHAR (20))"; if (mysqli_query (odkaz $, dotaz $)) echo "Tabulka byla vytvořena."; else echo "Tabulka nebyla vytvořena:" .mysqli_error (); mysqli_close (odkaz $);

V naší tabulce jsou pouze dvě pole: přihlašovací jméno a heslo. Zatím to už nepotřebujeme, nekomplikujme si proces.

Takže tabulka byla vytvořena.

Přidání řádků (záznamů) do tabulky - INSERT

Do tabulky můžete přidat nový řádek pomocí příkazu SQL insert. Zde je příklad:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ query = "INSERT INTO users (login, password) VALUE (" zeus "," pass123 ")"; if (mysqli_query (odkaz $, dotaz $)) echo "Uživatel přidán."; else echo "Žádný uživatel přidán:". mysqli_error (); mysqli_close (odkaz $);

SQL dotaz se skládá z příkazu INSERT INTO, jména databáze uživatelů, pak názvů polí v závorkách, poté slova VALUE, za nímž následují přidané hodnoty v závorkách. Hodnoty jsou uzavřeny v uvozovkách.

Syntaxe požadavku vypadá takto:

INSERT INTO název_tabulky (sloupec1, sloupec2) VALUE ("x1", "x2")

Uvozovky ve druhých závorkách jsou povinné.

Místo hodnot mohou být proměnné. Zde je příklad:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ login = "zeus"; $ heslo = "pass123"; $ query = "INSERT INTO users (login, password) VALUE (" $ login "," $ password ")"; if (mysqli_query (odkaz $, dotaz $)) echo "Uživatel přidán."; else echo "Žádný uživatel přidán:". mysqli_error (); mysqli_close (odkaz $);

Tento příklad samozřejmě nedává smysl. Pro začátečníky může být užitečné slyšet, že takto se do databáze zaznamenávají přihlašovací jména a hesla, která uživatelé zadávají při registraci. Tato data se ukládají do proměnných, poté se po kontrole zapisují do databáze.

existuje rychlý způsob vložení více řádků jedním dotazem INSERT:

INSERT INTO users (login, password) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

Jak vidíte, vyčíslená data jsou jednoduše oddělena čárkami.

Pomocí příkazu INSERT jsme se tedy naučili přidávat záznamy do tabulky. jdi dál.

Zobrazení tabulky: Příkaz SELECT

Nyní máme tabulku uživatelů, která má řádky. Předchozí skript lze spustit vícekrát a pokaždé přidá do tabulky řádek. Nyní možná nevíme, kolik řádků v tabulce máme. A chci vědět, co v něm máme napsané.

Chcete-li načíst data z tabulky, použijte příkaz SQL SELECT. Znak * znamená, že požadujeme všechna data, za slovo FROM pak napíšeme název tabulky, ze které chceme data přijímat.

Pojďme se dotazovat na všechna data z tabulky uživatelů:

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "VYBRAT * Z uživatelů"; $ vysledek = mysqli_query (odkaz $, dotaz $); if (! $ result) echo "Došlo k chybě:". mysqli_error (); else echo "Data přijata"; mysqli_close (odkaz $);

Funkce mysqli_query () nám vrátila identifikátor výsledku dotazu - vložíme ho do proměnné a v budoucnu s ním budeme pracovat pomocí dalších funkcí PHP.

Počet záznamů v žádosti

Pojďme zjistit, kolik řádků je v našem dotazu? Sám jsem spustil skript pro přidání záznamu do tabulky, nepamatuji si kolikrát a teď nevím, kolik řádků je v mé tabulce.

Funkce mysqli_num_rows () se používá k určení počtu řádků ve výsledku dotazu. Této funkci je předán identifikátor výsledku dotazu a vrátí počet záznamů.

$ link = mysqli_connect ("localhost", "root", "", "tester"); if (! $ odkaz) zemře ("Chyba"); $ dotaz = "VYBRAT * Z uživatelů"; $ vysledek = mysqli_query (odkaz $, dotaz $); if (! $ result) echo "Došlo k chybě:". mysqli_error (); else echo "Data přijata"; $ count = mysqli_num_rows ($ výsledek); echo "Celkový počet řádků v tabulce: $ count."; mysqli_close (odkaz $);

Pokud potřebujeme zjistit počet záznamů v tabulce, pak daná metoda není nejvhodnější. Zde jsme zjistili počet záznamů nalezených v dotazu, ale počet záznamů v tabulce se hledá jinak.

Počet záznamů v tabulce SELECT COUNT (*)

Chcete-li zjistit počet záznamů v tabulce, můžete použít příkaz SELECT COUNT (*) FROM název_tabulky.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); $ dotaz = "VYBRAT * Z uživatelů"; $ vysledek = mysqli_query (odkaz $, dotaz $); if (! $ result) echo "Došlo k chybě:". mysqli_error (); else echo "Data přijata."; $ count = mysqli_fetch_row ($ výsledek); echo "Celkový počet řádků v tabulce: $ count."; mysqli_close (odkaz $);

Upozorňujeme, že zde jsme použili nový Funkce PHP mysqli_fetch_row () k získání dat. Tato funkce vrací řádek výsledku dotazu ve formě jednoduchého pole, v našem případě je v řádku jedno pole a má index 0.

Zobrazení výsledku dotazu ve smyčce

Po provedení SQL dotazu pomocí příkazu SELECT a získání identifikátoru výsledku dotazu PHP vytvoří interní ukazatel v sadě záznamů výsledku. Tento ukazatel se po odkazu na aktuální záznam automaticky přesune na další záznam. Tento mechanismus velmi usnadňuje procházení výsledné sady dotazu SELECT.

PHP má několik funkcí, které lze použít k získání pole skládajícího se z jeho polí pro každý řádek výsledného dotazu. Vezměme si jako příklad funkci mysqli_fetch_row (). Této funkci je předáno ID požadavku a vrátí pole. Takže ve smyčce je skenován celý výsledek dotazu; po dosažení konce výsledku dotazu funkce vrátí hodnotu false.

Dotazujeme se tedy na všechna data z tabulky uživatelů (SELECT * FROM users).


"; while ($ row = mysqli_fetch_row ($ výsledek)) (echo" Login: $ row. Heslo: $ row.
";) mysqli_close (odkaz $);

Mysqli_fetch_row () vrací jednoduché pole. V každé iteraci cyklu obdržíme pole s řádkem z tabulky, k jehož polím se dostaneme zadáním číselného indexu.

Totéž lze provést pomocí funkce mysql_fetch_assoc (), vrátí asociativní pole.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); $ result = mysqli_query (odkaz $, "SELECT * FROM users"); if (! $ result) echo "Došlo k chybě:". mysqli_error (); jinak echo "Data přijata.
"; while ($ row = mysqli_fetch_assoc ($ výsledek)) (echo" Login: $ row. Heslo: $ row.
";) mysqli_close (odkaz $);

Existují také funkce mysqli_fetch_array () - vrací jakýkoli typ pole a mysqli_fetch_object () - vrací objekt.

SELECT DISTINCT Dotaz – Jedinečné hodnoty pole

Vytvoříme novou tabulku:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); // zrušení existující tabulky mysqli_query (odkaz $, "DROP TABLE users"); // vytvoření nové tabulky $ query = "CREATE TABLE users (jméno VARCHAR (20), příjmení VARCHAR (20), věk TINYINT UNSIGNED)"; if (mysqli_query (odkaz $, dotaz $)) echo "Tabulka byla vytvořena.
"; else echo" Tabulka není vytvořena: ". mysqli_error (); // funkce pro přidávání záznamů do tabulky funkce add_new_line ($ odkaz, $ dotaz) (if (! mysqli_query ($ odkaz, $ dotaz)) echo" Uživatel není added : ". mysqli_error ();) // přidání záznamů add_new_line ($ link," INSERT INTO users (jméno, příjmení, věk) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , "INSERT INTO users (jméno, příjmení, věk) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ link, "INSERT INTO users (jméno, příjmení, věk) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($ link," INSERT INTO users (jméno, příjmení, věk) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ link, " INSERT INTO users (jméno, příjmení, věk) VALUE ("Serg", "Borman", "43") "); add_new_line ($ link," INSERT INTO users (jméno, příjmení, věk) VALUE ("Max", " Lopes "," 21 ")"); // zobrazení obsahu tabulky v prohlížeči $ result = mysqli_query (odkaz $, "SELECT * FROM users"); if (! $ Result) echo "Došlo k chybě: ". Mysqli_error (); else echo "Data přijata.
"; while ($ row = mysqli_fetch_assoc ($ výsledek)) (echo" Jméno: $ řádek. Příjmení: $ řádek. Věk: $ řádek.
";) mysqli_close (odkaz $);

Máme tedy novou, komplexnější tabulku s unikátními záznamy. Nyní se podívejme, kolik jmen máme v databázi.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); $ result = mysqli_query (odkaz $, "VYBRAT DISTINCT jméno FROM uživatelů"); echo "Celkem jmen:". mysqli_num_rows (výsledek $). "
"; echo" Seznam jmen:
"; while ($ name = mysqli_fetch_row ($ výsledek)) (echo" $ name
";) mysqli_close (odkaz $);

SQL dotaz "SELECT DISTINCT name FROM users" vrátil výsledek se všemi jedinečnými názvy v naší tabulce. Každý jedinečný název na novém řádku ve výsledku dotazu.

Řazení výsledku - OBJEDNAT PODLE

Přidáním příkazu ORDER BY do SQL dotazu seřadíme výsledek dotazu vzestupně (číslice a písmena abecedně). Zde je příklad, kde můžete porovnat běžný dotaz a seřadit podle věku (pole věku).



";) echo" Seřadit podle věku:
"; $ result = mysqli_query (odkaz $," SELECT * FROM uživatelů ORDER BY age "); while ($ line = mysqli_fetch_row ($ result)) (echo" Jméno: $ line. Příjmení: $ line. Věk: $ čára.
";) mysqli_close (odkaz $);

Pole věku v příkazu ORDER BY můžete nahradit polem jména a uvidíte výsledek.

Chcete-li seřadit výsledek dotazu v opačném pořadí, použijte příkaz ORDER BY age DESC.

Odpovídající stav - KDE

Přidáním příkazu WHERE do SQL dotazu se budeme dotazovat pouze na ty záznamy, které splňují podmínku. Uveďme například žádost pro osoby mladší 30 let.

K tomu použijte SQL dotaz „SELECT * FROM users WHERE age

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); echo "Lidé do 30 let:
"; $ result = mysqli_query (odkaz $," SELECT * FROM uživatelé WHERE věku<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close (odkaz $);

Výsledek můžeme také okamžitě seřadit vzestupně podle věku:
"VYBERTE * Z uživatelů WHERE věku<30 ORDER BY age ".

Pokud uděláme dotaz „VYBRAT jméno FROM uživatelů WHERE věku<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

Můžeme se dotazovat na hodnoty dvou polí: „VYBRAT jméno, věk FROM uživatelů WHERE věk

Nyní se zeptejte na všechny uživatele s názvem „Max“.

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); echo "Všechny Max:
"; $ result = mysqli_query (odkaz $," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ výsledek)) (echo" Jméno: $ line. Příjmení: $ řádek. Věk: řádek $.
";) mysqli_close (odkaz $);

A další příklad dotazu - vybere pouze jména z tabulky uživatelů, vše kromě Max.

SELECT name FROM users WHERE name! = "Max"

To je vše s klauzulí WHERE.

Omezení záznamů - LIMIT

Přidáním příkazu LIMIT do SQL dotazu omezíme velikost výsledku.

Dotaz, který vytiskne první tři záznamy: "SELECT * FROM users LIMIT 3". Podívejme se, jak to funguje:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabulky:
"; $ result = mysqli_query (odkaz $," SELECT * FROM users "); while (řádek $ = mysqli_fetch_row (výsledek $)) (echo" Jméno: řádek $. Příjmení: řádek $. Věk: řádek $.
";) echo"

První tři příspěvky:
"; $ result = mysqli_query (odkaz $," SELECT * FROM LIMIT uživatelů 3 "); while (řádek $ = mysqli_fetch_row (výsledek $)) (echo" Jméno: řádek $. Příjmení: řádek $. Věk: řádek $ .
";) echo"

Druhé tři záznamy:
"; $ result = mysqli_query (odkaz $," SELECT * FROM uživatelů LIMIT 3, 3 "); while (řádek $ = mysqli_fetch_row (výsledek $)) (echo" Jméno: řádek $. Příjmení: řádek $. Věk: řádek $...
";) mysqli_close (odkaz $);

Také zde jsme použili dotaz: "SELECT * FROM users LIMIT 3, 3". Druhá trojice označuje posun ve výsledku dotazu.

Shoda vzoru – LIKE

Jazyk SQL podporuje jednoduché vzory. K tomu se používá příkaz LIKE a vzor je specifikován pomocí znaku %.

Zde je příklad dotazu, který vrátí všechny záznamy s názvy začínajícími písmenem S.

SELECT * FROM users WHERE name LIKE "S%"

Testování požadavku:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabulky:
"; $ result = mysqli_query (odkaz $," SELECT * FROM users "); while (řádek $ = mysqli_fetch_row (výsledek $)) (echo" Jméno: řádek $. Příjmení: řádek $. Věk: řádek $.
";) echo"

Jména začínající na S:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name LIKE "S%" "); while ($ line = mysqli_fetch_row ($ result)) (echo" Jméno: $ line. Příjmení: $ line Věk: $ line.
";) mysqli_close (odkaz $);

Zde je příklad dotazu, který vrátí všechny záznamy s příjmeními končícími na písmeno s.

SELECT * FROM users WHERE name LIKE "% s"

Odpovídající stav - IN

Tento dotaz pomocí příkazu IN vrátí pouze ty řádky, které přesně odpovídají podmínce.

Zajímají nás například lidé ve věku 21, 26 a 33 let.

VYBERTE * Z uživatelů WHERE věk IN (21,26,33)

Testování požadavku:

$ link = mysqli_connect ("localhost", "root", ""); if (! $ odkaz) zemře ("Chyba"); mysqli_select_db ("tester"); echo "Obsah tabulky:
"; $ result = mysqli_query (odkaz $," SELECT * FROM users "); while (řádek $ = mysqli_fetch_row (výsledek $)) (echo" Jméno: řádek $. Příjmení: řádek $. Věk: řádek $.
";) echo"

Lidé s požadovaným věkem (21, 26, 33):
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age IN (21, 26, 33) "); while ($ line = mysqli_fetch_row ($ result)) (echo" Jméno: $ line. Příjmení : řádek $. Věk: řádek $.
";) mysqli_close (odkaz $);

Maximální a minimální hodnota ve sloupci

Vybere maximální hodnotu věku v tabulce uživatelů.

SELECT max (věk) FROM uživatelů

Následující dotaz vybírá data z tabulky uživatelů pomocí polí jméno a věk, kde věk je minimální hodnota.

SELECT jméno, min (věk) FROM uživatelů

Aktualizace záznamu - AKTUALIZACE

Nechte Max Lopes nastavit věk na 15 let. To se provádí pomocí dotazu MySQL:

AKTUALIZOVAT uživatele SET věk = "15" KDE jméno = "Max" A příjmení = "Lopes"

Všimněte si nového příkazu AND (a - v angličtině znamená "a") v dotazu. Pokud neuvedeme příjmení, tak se všem Maxům v tabulce nastaví věk 15 let.

Jeden dotaz může aktualizovat dvě nebo více polí na jednom řádku. To se provádí následovně:

AKTUALIZUJTE NASTAVENÍ uživatelů věk = "18", příjmení = "Coocker" KDE id = "3"

Naše tabulka nemá pole id, takže tento dotaz na ní nebude fungovat. Ale toto pole obsahující jedinečná čísla řádků se určitě naučíme.

Smazat záznam - DELETE

Dotaz na databázi MySQL pro smazání záznamu:

DELETE FROM users WHERE id = "10"

V naší tabulce opět není žádné pole id. Můžeme z něj ale odstranit všechny lidi mladší 18 let.

ODSTRANIT Z uživatelů, KDE věk< "18"

SHOP STŮL

Databázový dotaz MySQL, který smaže celou tabulku uživatelů:

DROP TABLE uživatele

Vypuštění sloupce - ALTER TABLE ... DROP ...

Někdy může být nutné odstranit sloupec z tabulky, pojďme například odstranit sloupec věku z uživatelů:

Uživatelé ALTER TABLE DROP věk

Tento dotaz MySQL odstranil sloupec trvale a neodvolatelně.

Přidat sloupec - ALTER TABLE ... PŘIDAT ...

Někdy můžete chtít přidat sloupec do existující tabulky, pojďme například znovu přidat sloupec věku do tabulky uživatelů:

Uživatelé ALTER TABLE PŘIDAT věk TINYINT UNSIGNED

Přejmenování sloupce - ALTER TABLE ... ZMĚNA ...

Někdy může být nutné přejmenovat sloupec, například přejmenovat sloupec stáří na vozrast. Děláme to takto:

Uživatelé ALTER TABLE ZMĚNIT věk vozrast TINYINT UNSIGNED

Tento dotaz MySQL přejmenoval sloupec stáří na vozrast s datovým typem TINYINT UNSIGNED.

Přejmenování tabulky - PŘEJMENOVAT TABULKU ... NA ...

Někdy může být nutné přejmenovat tabulku:

PŘEJMENOVAT uživatele TABULKY NA lidi

Vypuštění databáze - DROP DATABASE

Tento dotaz může zrušit databázi s názvem tester:

DROP DATABASE tester

Vytvoření databáze - CREATE DATABASE

Tento dotaz vytvoří databázi s názvem tester:

CREATE DATABASE tester

Tento požadavek mi funguje na Denveru, ale na hostingu nemusí fungovat, pokud uživatel databáze nemá oprávnění provést smazání.

Výsledky

V tomto díle jsme se tedy seznámili s dotazy do MySQL. Mnoho požadavků, které jsme zvažovali, pro nás v procesu práce často nejsou užitečné, ale musíte je znát, protože se určitě budou hodit v procesu vývoje skriptů.

Některé požadavky jsou obvykle prováděny pouze z phpMyAdmin (například vytváření a mazání databází).

V práci webů obvykle potřebujete přidat záznam do tabulky, upravit záznam nebo odstranit záznam z tabulky.

Dalším krokem je prozkoumat datové typy MySQL.

Po instalaci a konfiguraci databáze MySQL můžete začít psát PHP skripty pro interakci s databází. Tento článek popisuje všechny základní funkce, které umožňují přenášet data tam a zpět z webové stránky do databáze.

Nezáleží na tom, jak jednoduché nebo složité jsou vaše skripty, pokud mluví s databází, začínají s několika stejnými věcmi:

  1. Připojení k nainstalované databázi MySQL.
  2. Použití příkazu USE proti požadované databázi MySQL.
  3. Odeslání SQL do databáze.
  4. Získávání výsledků.
  5. Zpracování výsledků.

Kroky 3, 4 a 5 se budou lišit v závislosti na povaze prováděné práce. Skript, který vytváří tabulky, se mírně liší od skriptu, který prohledává existující tabulky. Ale první dva kroky – připojení k MySQL a použití správné databáze – jsou vždy stejné, bez ohledu na účel skriptu.

Připojení k databázi MySQL

Nejprve musíte svému PHP skriptu sdělit, jak se připojit k databázi. Tento proces v podstatě říká PHP, aby dělalo přesně to, co jste dělali, když jste začínali s klientem příkazového řádku MySQL. Pro připojení k databázi bude PHP muset předat následující informace: název hostitele databáze, uživatelské jméno, heslo a název databáze.

Pro připojení k databázi použijeme PDO - PHP Data Objects. Při používání se nemůžete bát, to je možné díky připraveným parametrům, ale o tom později.

To je důležité! Pokud na internetu najdete lekci, kde se bude používat mysqli_connect nebo mysql_connect - klidně to zavřete, jak psali před 10 lety.

Chcete-li vytvořit připojení, musíte vytvořit nový objekt třídy PDO. Jako argumenty konstruktoru musíte předat DSN - to je řetězec označující ovladač (v našem případě mysql), hostitele a název databáze. Druhým argumentem je uživatelské jméno (v našem případě root). Třetí je heslo (v našem případě prázdné).

Před lekcí jsem vytvořil databázi uživatelů a v ní datový štítek s následující strukturou:

CREATE TABLE `data` (` id` int (11) NOT NULL AUTO_INCREMENT, `name` varchar (32) DEFAULT NULL,` year` char (4) VÝCHOZÍ NULL, PRIMÁRNÍ KLÍČ (id)) ENGINE = VÝCHOZÍ CHARSET InnoDB = utf8 ; $ dbh = new \ PDO ("mysql: hostitel = localhost; dbname = users;", "root", "");

Prvním krokem po připojení je nastavení kódování:

$ dbh-> exec ("SET NAMES UTF8");

Poté můžeme provádět požadavky. Vypadá to takto:

$ stm = $ dbh-> připravit ("INSERT INTO data (` name`, `year`) VALUES (: name,: year)"); $ stm-> bindValue ("jméno", "Jméno"); $ stm-> bindValue ("rok", "1703"); $ stm-> provést ();

Nejprve vytvoříme připravený požadavek - ještě není proveden. Všimněte si, že místo hodnot jsme zadali: název a: rok - to jsou parametry, do kterých budou nahrazeny hodnoty zadané v následujících dvou řádcích. Na konci zavoláme vykonat () - ve skutečnosti provedeme výsledný požadavek.

Spusťte tento skript a podívejme se, co se objevilo v databázi.

Ještě párkrát aktualizujeme skript a znovu se podíváme do databáze.

Načítání z databáze pomocí PHP

Pojďme si nyní přečíst data, která jsme napsali. Schéma je stejné, jen připravíme SELECT dotaz.

$ stm = $ dbh-> připravit ("SELECT * FROM` data` "); $ stm-> provést ();

Žádost byla splněna, ale to není vše. Nyní musíte získat výsledek. Dělá se to takto:

$ allUsers = $ stm-> fetchAll (); var_dump ($ allUsers);

V důsledku toho získáme pole těchto záznamů:

Pojďme je zobrazit krásněji, přidejte trochu HTML.

$ stm = $ dbh-> připravit ("SELECT * FROM` data` "); $ stm-> provést (); $ allUsers = $ stm-> fetchAll (); ?>

idnázevRok

No, to je úplně jiná věc!

Pokud potřebujete přidat nějaké parametry do SELECT dotazu, pak se to dělá stejným způsobem:

$ stm = $ dbh-> připravit ("SELECT * FROM` data` WHERE id =: id "); $ stm-> bindValue ("id", 1); $ stm-> provést (); $ users = $ stm-> fetchAll (); var_dump (uživatelů: $);

Nyní se vrátí pouze jeden uživatel splňující podmínky požadavku.

V tomto článku na příkladech rozebereme tak velmi důležité body při práci s databázemi MySQL (DB), jako je načítání z databáze, zápis do databáze, aktualizace informací v databázi a také jejich mazání z databáze. To vše bude probíhat pomocí čtyř – příkazů SELECT, INSERT, UPDATE a DELETE, o kterých bude řeč v tomto článku.

Pokud tedy potřebujete vytáhnout všechna pole z databáze, použijte následující kód.

$ result = mysql_query ("SELECT * FROM first_table", $ db);

Hvězdička znamená, že musíte vytáhnout všechna pole z tabulky.

Pokud potřebujete vytáhnout pouze některá pole, například jméno a příjmení.

$ result = mysql_query ("SELECT jméno, příjmení FROM první_tabulka", $ db);

jméno, příjmení - pole se jmény a příjmeními uživatelů.

Pokud potřebujete získat přesné údaje, např. příjmení všech uživatelů v databázi s konkrétním jménem (jméno bude zadáno do proměnné $ name).

name = '$ name' - pole name se rovná proměnné $ name.

Kromě jedné podmínky jich můžeme uvést i několik, například potřebujete získat identifikátor všech uživatelů s konkrétním jménem a příjmením (jméno a příjmení bude zadáno do proměnných $ jmeno a $ prijmeni, resp.) . K tomu můžeme použít následující kód.

Pokud potřebujeme získat záznamy, kde je splněna jedna z více podmínek, např. získat identifikátory všech uživatelů, jejichž jméno nebo příjmení se shoduje s těmi uvedenými v podmínkách.

Pokud potřebujete seřadit výsledek podle některých parametrů, například podle názvu.

$ result = mysql_query ("SELECT * FROM first_table ORDER BY name", $ db);

ORDER BY name - řazení podle názvu.

Pokud potřebujete řadit v opačném pořadí.

$ result = mysql_query ("SELECT * FROM first_table ORDER BY name DESC", $ db);

DESC - v opačném pořadí.

Pokud potřebujete vytáhnout z databáze pouze určitý počet polí. Například musíte vytáhnout prvních pět polí.

$ result = mysql_query ("SELECT * FROM first_table ORDER BY id LIMIT 5", $ db);

LIMIT 5 - vytáhněte z databáze pouze prvních pět výsledků.

Byly to malé příklady vzorku z databáze. Nyní se podíváme na to, jak výsledný výsledek převést do pole pro další použití, například pro zobrazení výsledku na obrazovce. Na to má PHP speciál mysql_fetch_array ().

Výsledek provedení funkce můžeme vložit do proměnné, například do proměnné $ myrow, která bude uložena v sobě. Jako parametr funkce mysql_fetch_array () bude předán výsledek provedení funkce mysql_query ()... Všechno to bude vypadat takto.

$ myrow = mysql_fetch_array ($ výsledek);

Nyní máme přístup k prvkům asociativního pole $ myrow. Jako příklad se podívejme na kód, který zobrazuje uživatelské jméno s id = 1. Jako databáze bude použita databáze db_first z předchozího článku.

/ * Připojení k databázi * / $ db = mysql_connect ("MySQL server", "Uživatel databáze", "Heslo pro přístup k databázi"); mysql_select_db ("název_db", $ db); / * Uděláme dotaz do databáze * / $ result = mysql_query ("SELECT name FROM first_table WHERE id =" $ id "", $ db); / * Převést výsledek na pole * / $ myrow = mysql_fetch_array ($ výsledek); / * Vytisknout výsledek na obrazovku * / echo $ myrow ["jméno"];

Jak vidíte, vše je velmi jednoduché a přímočaré.

Nyní přejdeme k dalšímu příkazu INSERT, který je zodpovědný za přidávání informací do databáze.

Přidávání informací do databáze. příkaz INSERT

Příkaz INSERT se používá k přidání informací do databáze. Kód zodpovědný za přidání má následující syntaxi.

$ result = mysql_query ("INSERT INTO tabulky (pole 1, pole 2, pole N) VALUES (" hodnota 1 "," hodnota 2 "," hodnota N ")");

Potřebujeme například přidat jméno a příjmení nového uživatele do první_tabulky. K tomu můžete použít následující kód.

$ result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES (" $ name "," $ last_name ")");

Kde $ name a $ last_name jsou proměnné s křestním jménem a příjmením nového uživatele.

Můžete použít ke kontrole výsledku.

$ result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES (" $ name "," $ last_name ")"); if ($ result == "true") (echo "Záznam byl úspěšně přidán!";) else (echo "Záznam nebyl přidán!";)

Jinými slovy, pokud proměnná $ result získá hodnotu true, zobrazí se zpráva, že záznam byl přidán. V opačném případě to bude vypadat, že záznam nebyl přidán do databáze.

Aktualizace informací v databázi. AKTUALIZOVAT prohlášení

Příkaz UPDATE se používá k aktualizaci existujících informací v databázi. Syntaxe funkce mysql_query je v tomto případě následující.

Nyní přejděme k příkladu. Řekněme, že potřebujeme změnit jméno a příjmení uživatele s identifikátorem $ id v tabulce db_name. K tomu můžete použít následující kód.

Nyní přejdeme k závěrečné části článku a podívejme se na poslední příkaz DELETE, který je zodpovědný za mazání informací z databáze.

Odstranění informací z databáze. příkaz DELETE

Příkaz DELETE se používá k odstranění polí z databáze. Syntaxe funkce mysql_query () je v tomto případě následující.

Nyní jako obvykle přejdeme k příkladu. Řekněme, že potřebujeme odstranit uživatele s $ id z tabulky db_name. K tomu můžete použít následující kód.

Tímto je tento článek uzavřen. Látka není obtížná, spíše je však obtížné ji vysvětlit prostřednictvím textu. Přesto si myslím, že chápete celý smysl výše uvedeného materiálu. Pokud máte k tomuto článku ještě nějaké dotazy, můžete se jich vždy zeptat v komentářích.

To je vše. Hodně štěstí a úspěchů v učení PHP a MySQL.