Chcesz dowiedzieć się, jak połączyć PHP z MySQL i wykonywać różne rodzaje operacji na bazach danych? W tym artykule zrobimy właśnie to — omówimy łączność z bazą danych MySQL w PHP.
PHP udostępnia różne sposoby łączenia PHP z serwerem bazy danych MySQL. Do PHP 5.5 jednym z najpopularniejszych sposobów było rozszerzenie MySQL — zapewniało ono „proceduralny” sposób łączenia się z serwerem MySQL. Jednak to rozszerzenie jest przestarzałe od PHP 5.5, więc nie będziemy o tym dyskutować.
Obecnie masz dwie opcje do wyboru PDO i MySQLi.
Rozszerzenie PDO (PHP Data Objects) obsługuje różne typy podstawowych serwerów baz danych wraz z serwerem MySQL. Dzięki temu jest przenośny na wypadek, gdybyś w przyszłości zdecydował się zamienić bazowy serwer bazy danych.
Z drugiej strony rozszerzenie MySQLi jest specyficzne dla serwera MySQL i zapewnia lepszą szybkość i wydajność. Rozszerzenie MySQLi może być na początku nieco prostsze do zrozumienia, ponieważ umożliwia bezpośrednie pisanie zapytań SQL. Jeśli pracowałeś wcześniej z bazami danych SQL, będzie to bardzo znajome. Rozszerzenie PDO tworzy jednak potężne mapowanie z bazy danych SQL do kodu PHP i umożliwia wykonywanie wielu operacji na bazie danych bez konieczności znajomości szczegółów SQL lub bazy danych. Na dłuższą metę i w przypadku większych projektów może to zaoszczędzić wiele wysiłku związanego z kodowaniem i debugowaniem.
W tym poście użyję rozszerzenia MySQLi. Ale możesz dowiedzieć się więcej o rozszerzeniu PDO tutaj na Envato Tuts+.
- PHPSzybko zbuduj interfejs PHP CRUD za pomocą zaawansowanego narzędzia generatora CRUD PDOSajal Soni
W tym artykule omówimy następujące tematy:
- tworzenie połączenia MySQL
- wstawianie, aktualizowanie i usuwanie rekordów
- odzyskiwanie rekordów
Najlepsze skrypty PHP do baz danych w CodeCanyon
W tym poście pokażę Ci, jak wykonać połączenie bare metal z bazą danych MySQL z PHP. Jest to ważna umiejętność, ale jeśli chcesz zaoszczędzić czas przy następnym projekcie, możesz chcieć uaktualnić do profesjonalnego skryptu bazy danych. Zaoszczędzi to czas i ułatwi pracę.
Poznaj najlepsze i najbardziej przydatne skrypty baz danych PHP, jakie kiedykolwiek stworzono w CodeCanyon. Dzięki taniej jednorazowej płatności możesz kupić te wysokiej jakości motywy WordPress i poprawić jakość korzystania z witryny dla siebie i odwiedzających.
Oto niektóre z najlepszych skryptów baz danych PHP dostępnych w CodeCanyon na rok 2020.
- PHPPorównanie warstw abstrakcji bazy danych PHP i wtyczek CRUD Sajal Soni
Utwórz połączenie MySQL
W tej sekcji pokażę, jak możesz połączyć się z serwerem MySQL ze swojego skryptu PHP i utworzyć obiekt połączenia. Później ten obiekt połączenia będzie używany do uruchamiania zapytań, pobierania danych wyjściowych i manipulowania rekordami bazy danych. Jak omówiliśmy wcześniej, w tym artykule użyjemy rozszerzenia PHP MySQLi.
Rozszerzenie MySQLi zapewnia dwa różne sposoby wykonywania operacji na bazie danych. Możesz go używać zarówno w sposób obiektowy, jak i proceduralny, ale ponieważ ten samouczek jest skierowany do początkujących, pozostanę przy sposobie proceduralnym. Jeśli chcesz zobaczyć fragmenty zorientowane obiektowo, możesz wysłać do mnie polecenie ping w sekcji komentarzy poniżej, a chętnie je udostępnię.
Aby rozpocząć, śmiało utwórz db_connect.php plik w katalogu głównym dokumentu z następującą zawartością.
<?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; }
Zauważ, że użyłem symboli zastępczych w mysqli_connect
funkcja — musisz je zastąpić rzeczywistymi wartościami.
Przejrzyjmy każdy symbol zastępczy, aby zobaczyć, co on oznacza.
{HOST_NAME}
:Reprezentuje nazwę hosta lub adres IP serwera MySQL. Jeśli zainstalowałeś serwer MySQL w tym samym systemie co PHP, powinieneś użyćlocalhost
lub127.0.0.1
. Z drugiej strony, jeśli używasz serwera MySQL, który jest hostowany zewnętrznie, możesz użyć odpowiedniej nazwy hosta lub adresu IP.{DATABASE_USERNAME}
:Reprezentuje nazwę użytkownika twojego użytkownika MySQL. Zasadniczo jest to nazwa użytkownika, której używasz do łączenia się z serwerem MySQL.{DATABASE_PASSWORD}
:To reprezentuje hasło twojego użytkownika MySQL. Ponownie jest to hasło, którego używasz do łączenia się z serwerem MySQL wraz z nazwą użytkownika MySQL.{DATABASE_NAME}
:To jest nazwa bazy danych MySQL, z którą chcesz się połączyć. Po utworzeniu połączenia prześlesz zapytanie do tej bazy danych w celu przeprowadzenia dalszych operacji.
Śmiało i zastąp te symbole zastępcze rzeczywistymi wartościami. W moim przypadku zainstalowałem serwer MySQL lokalnie i mam użytkownika MySQL z tutsplus-demo-user jako nazwę użytkownika MySQL i tutsplus-demo-password jako hasło MySQL. W związku z tym powyższy przykład wygląda tak:
<?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; }
Jeśli uruchomisz ten przykład, powinien utworzyć łącze do połączenia z bazą danych i przypisać je do $mysqli_link
zmienna, której użyjemy później do wykonywania różnych typów operacji na bazie danych.
Z drugiej strony, jeśli wystąpi jakiś problem z konfiguracją połączenia, mysqli_connect_errno
funkcja zwróci kod błędu, a mysqli_connect_error
funkcja wyświetli aktualny błąd. W powyższym przykładzie użyliśmy go do celów debugowania.
Teraz mamy udane połączenie z serwerem MySQL i od następnej sekcji zobaczymy, jak go używać do wykonywania różnych typów zapytań.
Jak wstawiać rekordy
W poprzedniej sekcji omówiliśmy, jak używać mysqli_connect
funkcja do zestawienia połączenia bazy danych z serwerem MySQL. W tej sekcji omówimy, jak użyć obiektu połączenia do wykonania INSERT
zapytania.
Jeśli chcesz podążać za przykładami omówionymi w tym artykule, musisz utworzyć następującą tabelę MySQL w swojej bazie danych. Jest to tabela, której od teraz będziemy używać we wszystkich przykładach.
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;
Śmiało i utwórz powyższą tabelę MySQL za pomocą oprogramowania phpMyAdmin lub narzędzia wiersza poleceń.
Następnie utwórzmy db_insert.php
plik o następującej treści. Nie zapomnij zastąpić parametrów połączenia własnymi.
<?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); ?>
Najpierw konfigurujemy połączenie z bazą danych za pomocą mysqli_connect
funkcja, jak omówiliśmy wcześniej. Następnie przygotowaliśmy zapytanie wstawiające, które wykonamy później. Należy zauważyć, że użyliśmy mysqli_real_escape_string
funkcja do zmiany znaczenia ciągów znaków, których będziemy używać w zapytaniu wstawiającym. W szczególności musisz użyć tej funkcji, gdy masz do czynienia z wartościami przesłanymi przez $_POST
zmienne, aby uniknąć wstrzyknięcia SQL.
Na koniec użyliśmy mysqli_query
funkcja, która przyjmuje dwa argumenty. Pierwszym argumentem jest aktywne łącze połączenia, w którym zostanie wykonane zapytanie. Drugim argumentem jest zapytanie MySQL, które chcemy wykonać. mysqli_query
funkcja zwraca TRUE
czy zapytanie zostało pomyślnie wykonane.
Na koniec użyliśmy mysqli_close
funkcja zamknięcia aktywnego połączenia z bazą danych. Dobrą praktyką jest zamknięcie połączenia z bazą danych po zakończeniu operacji na bazie danych.
Śmiało i uruchom skrypt, który powinien wstawić rekord w students
stół!
Jak aktualizować rekordy
Aktualizacja rekordów w bazie danych ze skryptu PHP jest bardzo podobna do operacji wstawiania; jedyną różnicą jest to, że zapytanie będzie zapytaniem aktualizacyjnym, a nie wstawiającym.
Zweryfikujmy powyższy przykład i zaktualizujmy first_name
jak pokazano w poniższym przykładzie.
<?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); ?>
Śmiało i uruchom skrypt, który powinien zaktualizować rekord w grupie students
stół.
Jak wybrać rekordy
We wcześniejszych rozdziałach omówiliśmy sposób wstawiania i aktualizowania rekordów w bazie danych ze skryptu PHP. W tej sekcji przyjrzymy się, jak możesz pobierać rekordy z bazy danych przy użyciu różnych typów funkcji MySQLi.
Po pierwsze, musisz użyć mysqli_query
funkcja do wykonania zapytania wybierającego. Po pomyślnym wykonaniu zapytania wybierającego mysqli_query
funkcja zwraca obiekt wynikowy mysqli, którego moglibyśmy użyć do iteracji rekordów zwróconych przez zapytanie wybierające. Jeśli chodzi o pobieranie i iterację rekordów z obiektu wynikowego MySQLi, dostępne są różne funkcje.
mysqli_fetch_all
:Pozwala na jednoczesne pobranie wszystkich wierszy wyników. Możesz także określić, czy chcesz uzyskać wyniki jako tablicę asocjacyjną, tablicę liczbową, czy obie.mysqli_fetch_array
:Pozwala na pobieranie jednego wiersza na raz. W związku z tym będziesz musiał użyć pętli while do iteracji po wszystkich rekordach. Ponownie, możesz określić, czy wiersz wynikowy ma być tablicą asocjacyjną, tablicą liczbową, czy obiema.mysqli_fetch_assoc
:Pobiera wiersz wynikowy pojedynczo jako tablica skojarzona.mysqli_fetch_object
:Pobiera jeden wiersz wyników jako obiekt.
Rzućmy okiem na następujący przykład, aby zrozumieć, jak to działa:
<?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 widać, użyliśmy mysqli_fetch_array
funkcja z MYSQLI_ASSOC
opcja jako drugi argument. W ten sposób zwraca wynikowy wiersz jako tablicę skojarzoną. Jeśli używasz MYSQLI_NUM
opcja, uzyskasz do niej dostęp w następujący sposób $row[0]
, $row[1]
i $row[2]
w powyższym przykładzie.
Z drugiej strony, jeśli użyjesz mysqli_fetch_object
funkcji w powyższym przykładzie, możesz uzyskać dostęp do wartości, jak pokazano w poniższym fragmencie. Dla zwięzłości dołączę tylko fragment pętli 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/>"; } ... ...
W ten sposób możesz pobierać i wyświetlać rekordy z bazy danych MySQLi.
Jak usunąć rekordy
W tej sekcji zobaczymy, jak uruchomić zapytania usuwające ze skryptu PHP. Usuwanie rekordów z bazy danych jest dość prostą operacją, ponieważ wystarczy przygotować zapytanie usuwające i uruchomić je z mysqli_query
funkcja.
Przejrzyjmy następujący przykład, aby zobaczyć, jak to działa.
<?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 widać, wszystko jest takie samo, jak widzieliśmy już w przykładach wstawiania i aktualizowania, z wyjątkiem tego, że zapytanie jest w tym przypadku zapytaniem usuwającym.
W ten sposób możesz wykonywać różne rodzaje operacji na bazie danych ze skryptu PHP.
I dzięki temu dotarliśmy do końca tego samouczka. To, co omówiliśmy do tej pory, powinno pomóc ci wzmocnić koncepcje łączności z bazami danych, w szczególności jak łączyć PHP z MySQL i wykonywać różne rodzaje operacji.