Latest web development tutorials
×

PHP kurs

PHP kurs PHP krótkie wprowadzenie PHP zainstalować PHP gramatyka PHP zmienna PHP echo/print PHP Typy danych PHP stały PHP sznur PHP operatorzy PHP If...Else PHP Switch PHP szyk PHP Sortowanie tablicy PHP superglobalne PHP While krążenie PHP For krążenie PHP funkcja PHP Magiczne Zmienne PHP Przestrzenie nazw PHP Obiektowe

PHP forma

PHP forma PHP Uwierzytelnianie za pomocą formularzy PHP forma - wymagane pola PHP forma - Weryfikacja e-mail i adres URL PHP Kompletna wystąpienie formularza PHP $_GET zmienna PHP $_POST zmienna

PHP zaawansowane Tutorial

PHP Tablice wielowymiarowe PHP data PHP zawierać PHP plik PHP Prześlij plik PHP Cookie PHP Session PHP E-mail PHP bezpieczeństwo E-mail PHP Error PHP Exception PHP filtr PHP Filtr zaawansowany PHP JSON

PHP 7 Nowe funkcje

PHP 7 Nowe funkcje

PHP baza danych

PHP MySQL krótkie wprowadzenie PHP MySQL połączenie PHP MySQL Tworzenie bazy danych PHP MySQL Tworzenie tabeli danych PHP MySQL Należy wprowadzić dane PHP MySQL Wstawić wiele danych PHP MySQL Przygotowane sprawozdania PHP MySQL odczytać dane PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX krótkie wprowadzenie AJAX PHP AJAX baza danych AJAX XML AJAX Wyszukiwanie w czasie rzeczywistym AJAX RSS Reader AJAX głosowanie

PHP Reference Manual

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP Przetwarzanie obrazu PHP RESTful

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 = "[email protected]";
$ Stmt-> execute ();

$ Imię = "Mary";
$ Nazwisko = "Moe";
$ Email = "[email protected]";
$ Stmt-> execute ();

$ Imię = "Julie";
$ Nazwisko = "Dooley";
$ Email = "[email protected]";
$ 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 = "[email protected]";
$ Stmt-> execute ();

// Insert kolejny wiersz
$ Imię = "Mary";
$ Nazwisko = "Moe";
$ Email = "[email protected]";
$ Stmt-> execute ();

// Insert kolejny wiersz
$ Imię = "Julie";
$ Nazwisko = "Dooley";
$ Email = "[email protected]";
$ Stmt-> execute ();

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