Chcete se naučit propojit PHP s MySQL a provádět různé typy databázových operací? V tomto článku to uděláme – probereme konektivitu databáze MySQL v PHP.
PHP poskytuje různé způsoby připojení PHP k databázovému serveru MySQL. Až do PHP 5.5 bylo jedním z nejoblíbenějších způsobů rozšíření MySQL – poskytovalo „procedurální“ způsob připojení k serveru MySQL. Toto rozšíření je však od PHP 5.5 zastaralé, takže o tom nebudeme diskutovat.
V současné době máte dvě možnosti:PDO a MySQLi.
Rozšíření PDO (PHP Data Objects) podporuje různé typy základních databázových serverů spolu se serverem MySQL. A proto je přenosný v případě, že se rozhodnete kdykoli v budoucnu vyměnit podkladový databázový server.
Na druhou stranu je rozšíření MySQLi specifické pro server MySQL a poskytuje vyšší rychlost a výkon. Rozšíření MySQLi může být zpočátku také trochu jednodušší na pochopení, protože vám umožňuje přímo psát dotazy SQL. Pokud jste již dříve pracovali s databázemi SQL, bude to velmi známé. Rozšíření PDO však vytváří výkonné mapování z databáze SQL do vašeho kódu PHP a umožňuje vám provádět mnoho databázových operací, aniž byste museli znát podrobnosti o SQL nebo databázi. Z dlouhodobého hlediska a u větších projektů to může ušetřit spoustu úsilí při kódování a ladění.
V tomto příspěvku použiji rozšíření MySQLi. Více o rozšíření PDO se však můžete dozvědět zde na Envato Tuts+.
- PHPrychle vytvořte rozhraní PHP CRUD s nástroji PDO Advanced CRUD Generator ToolSajal Soni
V tomto článku se budeme zabývat následujícími tématy:
- vytvoření připojení MySQL
- vkládání, aktualizace a mazání záznamů
- načítání záznamů
Nejlepší skripty databáze PHP na CodeCanyon
V tomto příspěvku vám ukážu, jak vytvořit připojení k databázi MySQL z PHP. Je to důležitá dovednost, ale pokud chcete ušetřit čas na dalším projektu, možná budete chtít upgradovat na profesionální databázový skript. To ušetří čas a usnadní vám práci.
Prozkoumejte nejlepší a nejužitečnější skripty PHP databáze, jaké byly kdy vytvořeny na CodeCanyon. Díky nízkonákladové jednorázové platbě si můžete zakoupit tato vysoce kvalitní témata WordPress a zlepšit zážitek z webu pro vás i vaše návštěvníky.
Zde jsou některé z nejlepších skriptů databáze PHP dostupných na CodeCanyon pro rok 2020.
- PHPCcomparing PHP Database Abstraction Layers a CRUD Plugins Sajal Soni
Vytvořte připojení MySQL
V této části vám ukážu, jak se můžete připojit k serveru MySQL z vašeho skriptu PHP a vytvořit objekt připojení. Později bude tento objekt připojení použit ke spouštění dotazů, načítání výstupu a manipulaci s databázovými záznamy. Jak jsme probrali dříve, v tomto článku použijeme rozšíření PHP MySQLi.
Rozšíření MySQLi poskytuje dva různé způsoby provádění databázových operací. Můžete jej použít buď objektově orientovaným způsobem, nebo procedurálním způsobem, ale protože je tento tutoriál zaměřen na začátečníky, zůstanu u procedurálního způsobu. Pokud máte zájem vidět nějaké objektově orientované úryvky, můžete mi napsat ping v sekci komentářů níže a já vám je rád poskytnu.
Chcete-li začít, pokračujte a vytvořte db_connect.php soubor v kořenovém adresáři vašeho dokumentu s následujícím obsahem.
<?php $mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Všimněte si, že jsem v mysqli_connect
použil zástupné symboly funkce – musíte je nahradit skutečnými hodnotami.
Pojďme si projít každý zástupný symbol, abychom viděli, co znamená.
{HOST_NAME}
:Toto představuje název hostitele nebo IP adresu vašeho serveru MySQL. Pokud jste na stejný systém nainstalovali server MySQL spolu s PHP, měli byste použítlocalhost
nebo127.0.0.1
. Na druhou stranu, pokud používáte server MySQL, který je hostován externě, můžete použít odpovídající název hostitele nebo IP adresu.{DATABASE_USERNAME}
:Toto představuje uživatelské jméno vašeho uživatele MySQL. V podstatě se jedná o uživatelské jméno, které používáte pro připojení k vašemu serveru MySQL.{DATABASE_PASSWORD}
:Toto představuje heslo vašeho uživatele MySQL. Toto je opět heslo, které používáte pro připojení k serveru MySQL spolu s uživatelským jménem MySQL.{DATABASE_NAME}
:Toto je název databáze MySQL, ke které se chcete připojit. Jakmile je připojení vytvořeno, požádáte tuto databázi o další operace.
Pokračujte a nahraďte tyto zástupné symboly skutečnými hodnotami. V mém případě jsem lokálně nainstaloval server MySQL a mám uživatele MySQL s tutsplus-demo-user jako uživatelské jméno MySQL a tutsplus-demo-password jako heslo MySQL. A s tím výše uvedený příklad vypadá takto:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; }
Pokud spustíte tento příklad, měl by vytvořit odkaz na připojení k databázi a přiřadit jej k $mysqli_link
proměnnou, kterou později použijeme k provádění různých typů databázových operací.
Na druhou stranu, pokud dojde k problému s nastavením připojení, mysqli_connect_errno
funkce vrátí kód chyby a mysqli_connect_error
funkce zobrazí skutečnou chybu. Ve výše uvedeném příkladu jsme jej použili pro účely ladění.
Nyní máme úspěšné připojení k serveru MySQL a v další části uvidíme, jak jej používat k provádění různých typů dotazů.
Jak vložit záznamy
V předchozí části jsme probrali, jak používat mysqli_connect
funkce pro nastavení databázového spojení se serverem MySQL. V této části budeme pokračovat a diskutovat o tom, jak použít objekt připojení k provedení INSERT
dotazy.
Chcete-li se řídit příklady probíranými v tomto článku, budete muset ve své databázi vytvořit následující tabulku MySQL. Je to tabulka, kterou budeme od této chvíle používat ve všech příkladech.
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Pokračujte a vytvořte výše uvedenou tabulku MySQL pomocí softwaru phpMyAdmin nebo nástroje příkazového řádku.
Dále vytvoříme db_insert.php
soubor s následujícím obsahem. Nezapomeňte prosím nahradit parametry připojení svými vlastními.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`) VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')"; // run the insert query If (mysqli_query($mysqli_link, $insert_query)) { echo 'Record inserted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Nejprve nastavíme připojení k databázi pomocí mysqli_connect
funkce, jak jsme hovořili dříve. Poté jsme připravili vkládací dotaz, který provedeme později. Je důležité poznamenat, že jsme použili mysqli_real_escape_string
funkce pro únik hodnot řetězců, které budeme používat ve vkládacím dotazu. Konkrétně musíte tuto funkci použít, když pracujete s hodnotami odeslanými prostřednictvím $_POST
proměnné, aby se zabránilo vkládání SQL.
Nakonec jsme použili mysqli_query
funkce, která má dva argumenty. Prvním argumentem je aktivní odkaz na připojení, kde bude dotaz proveden. A druhým argumentem je dotaz MySQL, který chceme provést. mysqli_query
funkce vrací TRUE
pokud byl dotaz úspěšně proveden.
Nakonec jsme použili mysqli_close
funkce pro uzavření aktivního připojení k databázi. Po dokončení operací s databází je dobrým zvykem ukončit připojení k databázi.
Pokračujte a spusťte skript, který by měl vložit záznam do students
stůl!
Jak aktualizovat záznamy
Aktualizace záznamů v databázi z PHP skriptu je velmi podobná operaci vložení; jediný rozdíl je v tom, že dotaz bude aktualizačním dotazem namísto vkládacího dotazu.
Upravme výše uvedený příklad a aktualizujeme first_name
pole, jak ukazuje následující příklad.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $update_query)) { echo 'Record updated successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Pokračujte a spusťte skript, což by mělo aktualizovat záznam v students
stůl.
Jak vybrat záznamy
V předchozích částech jsme diskutovali o tom, jak můžete vkládat a aktualizovat záznamy v databázi pomocí skriptu PHP. V této části prozkoumáme, jak můžete načíst záznamy z databáze pomocí různých typů funkcí MySQLi.
Nejprve musíte použít mysqli_query
funkce pro provedení výběrového dotazu. Po úspěšném provedení výběrového dotazu mysqli_query
Funkce vrací objekt výsledku mysqli, který bychom mohli použít k iteraci záznamů vrácených výběrovým dotazem. Pokud jde o načítání a opakování záznamů z objektu výsledků MySQLi, jsou k dispozici různé funkce.
mysqli_fetch_all
:Umožňuje vám načíst všechny řádky výsledků najednou. Můžete také určit, zda chcete výsledky jako asociativní pole, číselné pole nebo obojí.mysqli_fetch_array
:Umožňuje vám načíst jeden řádek po druhém. A proto budete muset použít smyčku while k iteraci všech záznamů. Opět můžete určit, zda chcete výsledný řádek jako asociativní pole, číselné pole nebo obojí.mysqli_fetch_assoc
:Načte řádek výsledků jeden po druhém jako přidružené pole.mysqli_fetch_object
:Načte řádek s výsledkem jeden po druhém jako objekt.
Podívejme se na následující příklad, abychom pochopili, jak to funguje:
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $select_query = "SELECT * FROM students LIMIT 10"; $result = mysqli_query($mysqli_link, $select_query); while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { echo "First Name:" . $row['first_name'] . "<br/>"; echo "Last Name:" . $row['last_name'] . "<br/>"; echo "Email:" . $row['email'] . "<br/>"; echo "<br/>"; } // close the db connection mysqli_close($mysqli_link); ?>
Jak můžete vidět, použili jsme mysqli_fetch_array
pomocí MYSQLI_ASSOC
možnost jako druhý argument. A tak vrátí výsledný řádek jako přidružené pole. Pokud používáte MYSQLI_NUM
možnost, měli byste k ní přistupovat jako $row[0]
, $row[1]
a $row[2]
ve výše uvedeném příkladu.
Na druhou stranu, pokud použijete mysqli_fetch_object
funkce ve výše uvedeném příkladu, můžete přistupovat k hodnotám, jak je uvedeno v následujícím úryvku. Pro stručnost uvedu pouze fragment smyčky while.
… … while ($row = mysqli_fetch_object($result)) { echo "First Name:" . $row->first_name . "<br/>"; echo "Last Name:" . $row->last_name . "<br/>"; echo "Email:" . $row->email . "<br/>"; echo "<br/>"; } ... ...
Tímto způsobem tedy můžete načítat a zobrazovat záznamy z databáze MySQLi.
Jak smazat záznamy
V této části uvidíme, jak spustit dotazy na odstranění ze skriptu PHP. Odstranění záznamů z databáze je docela jednoduchá operace, protože stačí připravit mazací dotaz a spustit jej pomocí mysqli_query
funkce.
Pojďme si projít následující příklad, abychom viděli, jak to funguje.
<?php $mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database"); if (mysqli_connect_errno()) { printf("MySQL connection failed with the error: %s", mysqli_connect_error()); exit; } $delete_query = "DELETE FROM students WHERE `email` = '[email protected]'"; // run the update query If (mysqli_query($mysqli_link, $delete_query)) { echo 'Record deleted successfully.'; } // close the db connection mysqli_close($mysqli_link); ?>
Jak vidíte, vše je stejné, jak jsme již viděli u příkladů vložení a aktualizace, až na to, že dotaz je v tomto případě odstraňovací dotaz.
Takto můžete z PHP skriptu provádět různé typy databázových operací.
A tím jsme se dostali na konec tohoto tutoriálu. To, o čem jsme dnes diskutovali, by vám mělo pomoci posílit koncepty konektivity databází, konkrétně jak připojit PHP k MySQL a provádět různé typy operací.