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 PDO przygotowane oświadczeń i procedur przechowywanych

Podręcznik PHP PDO referencyjny Podręcznik PHP PDO referencyjny

Wiele bardziej dojrzałych baz wsparcie koncepcji przygotowanych sprawozdań.

Czym jest przygotowane sprawozdanie? Potraktujcie to jako skompilowany szablon, który chcesz uruchomić SQL, który można dostosować za pomocą zmiennych parametrów. Przygotowane sprawozdania oferują dwie główne korzyści:

  • tylko zapytania postanawia obróbki wstępnej (lub) jeden raz, ale może być wykonywana wielokrotnie, w tych samych lub różnych parametrów. Gdy kwerenda jest gotowa, baza danych będzie analizował, skompilować i wykonać plan optymalizacji zapytań. W przypadku złożonych zapytań, ten proces trwa długo, jeśli trzeba powtarzać wiele razy z różnymi parametrami tego samego zapytania, to proces będzie znacznie zmniejszyć szybkość działania aplikacji. Korzystając z przygotowanego sprawozdania uniknąć powtarzania analizy / opracowania / cykl zoptymalizować. W skrócie, przygotowuje sprawozdanie wykorzystywać mniej zasobów, a tym samym szybciej.
  • Zapewnienie parametrów do sporządzanych sprawozdań nie trzeba używać cudzysłowu, kierowcy będą obsługiwane automatycznie. Jeśli aplikacja używa tylko przygotowane oświadczenia, możemy zapewnić, że żaden SQL injection. (Jednakże, jeśli inne części zapytania nie uciekł od wejścia na budowę, to wciąż istnieje ryzyko SQL injection).

Przygotowane sprawozdania tak użyteczne, że jedynym elementem jest przetwarzanie analogowo gdy kierowca nie obsługuje PDO. Gwarantuje to, że niezależnie od tego, czy baza danych ma funkcję, można zapewnić, że aplikacje mogą korzystać z tych samych wzorców dostępu do danych.

PreparedStatements powtarzane wstawiania

Poniższy przykład podstawiając odpowiednią nazwę zastępczy o nazwie i wartości, aby wykonać operację INSERT

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

PreparedStatements powtarzane wstawiania

Poniższy przykład zastępując nazwę i wartość? Placeholders wykonać kwerendy wstawiania.

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

// 用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

Uzyskaj dane za pomocą przygotowanych sprawozdań

Poniższy przykład w postaci klucza dostępu opartego na danych już przewidziane. Wprowadzane przez użytkownika jest automatycznie ujęta w cudzysłów, więc nie ma ryzyka ataków SQL injection.

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
?>

Jeśli wsparcie sterownika bazy danych, aplikacja może również wiązać parametry wejściowe i wyjściowe parametry wyjściowe są zazwyczaj stosowane w celu uzyskania wartości z procedury przechowywanej. Parametry wyjściowe w obsłudze niż parametrów wejściowych być nieco bardziej skomplikowana, ponieważ podczas wiązania parametru wyjściowego, należy znać parametry danej długości. Jeśli wartość parametru jest większa niż obowiązującymi zaleceniami długości, zostanie wygenerowany błąd.

Wywołanie procedury przechowywanej z parametrem wyjściowym

<?php
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $return_value\n";
?>

Można również określić obie wartości wejściowych i wyjściowych parametrów, składnia jest podobna do parametrów wyjściowych. W następnym przykładzie, ciąg "hello" jest przekazywany do procedury składowanej, gdy procedura składowana zwraca, cześć jest zastępowany wartości zwracanej procedury przechowywanej.

Z wejścia / parametrów wyjściowych do wywołania procedury przechowywanej

<?php
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

// 调用存储过程
$stmt->execute();

print "procedure returned $value\n";
?>

Nieprawidłowe użycie zastępczego

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));

// 占位符必须被用在整个值的位置
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
?>

Podręcznik PHP PDO referencyjny Podręcznik PHP PDO referencyjny