Najlepszy samouczek PHP MySQL przygotowane sprawozdania W 2024 r. W tym samouczku możesz dowiedzieć się Przygotowane sprawozdania i parametry bound,MySQLi sporządziły sprawozdania,Przykłady (MySQLi wykorzystaniem przygotowanych sprawozdań),PDO przygotowane oświadczeń w,Przykłady (PDO z wykorzystaniem przygotowanych sprawozdań),

PHP MySQL przygotowane sprawozdania

Przygotowane sprawozdania, aby zapobiec iniekcji MySQL jest bardzo przydatna.


Przygotowane sprawozdania i parametry bound

Przygotowane sprawozdania dotyczące wykonywania wielu tej samej instrukcji SQL i wykonać bardziej efektywnie.

Prace sporządzanych sprawozdań w następujący sposób:

  1. Gruntowanie: Tworzenie szablonu SQL oświadczenie wysłane do bazy danych. Wartość parametru zastrzeżone "?" Mark. Na przykład:

    INSERT 
    	INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
  2. Analiza bazy danych, kompilacja, wykonanie instrukcji SQL szablonu optymalizację zapytań i zapisuje wynik nie jest wyjście.

  3. Wykonanie: Na koniec, wartości parametrów przekazywanych do wiązania (znak "?") Aplikacji, bazy danych wykonuje instrukcje. Aplikacje mogą być wykonywane tyle razy, jeżeli wartość parametru nie jest taka sama.

W porównaniu do bezpośredniego wykonywania instrukcji SQL, przygotowane zestawienie ma dwie główne zalety:

  • Przygotowane sprawozdania dramatycznie skraca czas analizy, tylko zapytania (choć instrukcje są wykonywane).

  • Związane parametry zmniejszyć przepustowość serwera, wystarczy tylko wysłać zapytanie parametru zamiast całej wypowiedzi.

  • Przygotowane sprawozdania przed SQL injection jest bardzo przydatna, ponieważ po użyciu różnych protokołów do wysyłania wartości parametrów w celu zapewnienia legitymacji danych.


MySQLi sporządziły sprawozdania

Poniższy przykład używa mysqli w przygotowanym oświadczeniu i powiązać odpowiednie parametry:

Przykłady (MySQLi wykorzystaniem przygotowanych sprawozdań)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "MojaBD";

// Tworzenie połączenia
$ Conn = new mysqli ($ nazwa_serwera, $ username, $ password, $ dbname);

// Test połączenia
if ($ conn-> connect_error) {
die ( "Połączenie nie powiodło się:" $ conn-> connect_error.);
}

// Wstępna i wiążące
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (imię, nazwisko, e-mail) VALUES (,,) ???");
$ Stmt-> bind_param ( "sss", $ imię, Nazwisko $, $ e-mail);

// Ustawiamy parametry i wykonać
$ Imię = "John";
$ Nazwisko = "Kowalski";
$ Email = "john@example.com";
$ Stmt-> execute ();

$ Imię = "Mary";
$ Nazwisko = "Moe";
$ Email = "mary@example.com";
$ Stmt-> execute ();

$ Imię = "Julie";
$ Nazwisko = "Dooley";
$ Email = "julie@example.com";
$ Stmt-> execute ();

echo "Nowa płyta jest włożona pomyślnie";

$ Stmt-> close ();
$ Conn-> close ();
?>

Podczas analizowania każdej linii kodu w poniższych przykładach:

"INSERT INTO MyGuests (imię, nazwisko, e-mail) VALUES (?,?,?)"

W instrukcji SQL, używamy znaku zapytania (?), Można tu wymienić znak zapytania całkowitą, łańcuch, podwójnej precyzji zmiennoprzecinkowych i wartości logiczne.

Następnie spójrzmy na bind_param () funkcję:

$ Stmt-> bind_param ( "sss", $ imię, Nazwisko $, $ e-mail);

Parametry funkcji SQL wiązania i powiedz wartość parametru bazy danych. "SSS" typy danych parametrów przetwarzania kolumny dla pozostałych parametrów. s znaków bazy danych, która opowiada łańcuchu parametrów.

Istnieją cztery rodzaje parametrów:

  • I - liczba całkowita (integer)
  • d - podwójna (pkt zmiennoprzecinkowych podwójnej precyzji)
  • s - łańcuch (string)
  • b - BLOB (duży obiekt binarny: blob)

Każdy parametr jest wymagany, aby określić typ.

Parametr typ danych opowiada bazy danych, można zmniejszyć ryzyko wystąpienia SQL injection.

uwaga Uwaga: Jeśli chcesz wstawić dodatkowych danych wejściowych (user), weryfikacja danych jest bardzo ważne.


PDO przygotowane oświadczeń w

Poniższe przykłady używamy przygotowanych oświadczeń w PDO i parametrów wiążących:

Przykłady (PDO z wykorzystaniem przygotowanych sprawozdań)

<? Php
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDBPDO";

try {
$ Conn = new PDO ( "mysql: host = $ nazwa_serwera; nazwa_bd = $ nazwa_bd" $ username, $ password);
// Ustawienie trybu wyjątek błędu PDO
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);

// wstępnego oczyszczania i SQL parametry wiązania
$ Stmt = $ conn-> prepare ( "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES (: Imię Nazwisko ,: ,: e) ");
$ Stmt-> bindParam ( 'Imię', $ Imię);
$ Stmt-> bindParam ( 'Nazwisko', $ Nazwisko);
$ Stmt-> bindParam ( 'email', $ e-mail);

// Wstaw wiersz
$ Imię = "John";
$ Nazwisko = "Kowalski";
$ Email = "john@example.com";
$ Stmt-> execute ();

// Insert kolejny wiersz
$ Imię = "Mary";
$ Nazwisko = "Moe";
$ Email = "mary@example.com";
$ Stmt-> execute ();

// Insert kolejny wiersz
$ Imię = "Julie";
$ Nazwisko = "Dooley";
$ Email = "julie@example.com";
$ Stmt-> execute ();

echo "Nowa płyta jest włożona pomyślnie";
}
catch (PDOException $ e)
{
pl Echo $ sql "Największa" $ e-> getMessage ();
}
$ Conn = null;
?>

PHP MySQL przygotowane sprawozdania
10/30