Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak podłączyć PHP do MySQL

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 lub 127.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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj całkowitą liczbę wierszy, gdy używasz LIMIT?

  2. Alternatywy MySQL Workbench — GUI typu „wskaż i kliknij” ClusterControl

  3. Jak najlepiej przechowywać informacje o użytkowniku oraz login i hasło użytkownika?

  4. MySQL nie używa indeksów z klauzulą ​​WHERE IN?

  5. Nielegalna mieszanka błędów sortowania w MySql