Menu
Jest wolny
Rejestracja
Dom  /  Multimedialne/ Jak używać PHP do wstawiania wierszy do bazy danych MySQL. Zapisywanie danych do MySQL - aby piosenka kodu zabrzmiała Php wprowadzając dane do bazy danych

Jak używać PHP do wstawiania wierszy do bazy danych MySQL. Zapisywanie danych do MySQL - aby piosenka kodu zabrzmiała Php wprowadzając dane do bazy danych

W tym samouczku przyjrzymy się, jak wstawić dane do bazy danych bezpośrednio ze skryptów PHP.

Wstawianie danych za pomocą SQL

Używasz języka SQL do wstawiania danych do bazy danych w taki sam sposób, w jaki używasz języka SQL do tworzenia bazy danych i tabel. Składnia zapytania SQL to:

WSTAW DO NazwaTabeli (kolumna1, kolumna 2, ...) WARTOŚCI(wartość1, wartość 2, ...)

Jak widać, możesz zaktualizować wiele kolumn w jednej instrukcji SQL, określając je na liście oddzielonej przecinkami. Ale oczywiście możesz również określić tylko jedną kolumnę i jedną wartość. Kolumny niewymienione w danej instrukcji SQL pozostaną puste.

Przykład: Wstawienie nowej osoby do tabeli

W tym przykładzie używamy bazy danych z lekcji 18. Powiedzmy, że chcemy wstawić osobę do bazy danych. Mogłoby być Gus Gęś z numerem telefonu 99887766 i data urodzenia 1964-04-20 .

Instrukcja SQL może wyglądać tak:

$strSQL = "INSERT INTO people(Imię,Nazwisko,Telefon,Data urodzenia) VALUES("Gus","Goose","99887766 ","1964-04-20"");

Jak widać, instrukcje SQL mogą być dość długie i łatwo się zgubić. Dlatego lepiej napisać instrukcję SQL nieco inaczej:

strSQL = "WSTAW DO osób("; strSQL = strSQL . "Imię"; strSQL = strSQL . "Nazwisko" strSQL = strSQL . "telefon"; strSQL = strSQL . "narodziny)"; strSQL = strSQL . "WARTOŚCI("; strSQL = strSQL . ""Gus", "; strSQL = strSQL . ""Gęś", "; strSQL = strSQL . ""99887766", "; strSQL = strSQL . ""1964-04-20""; mysql_query($strSQL) lub die(mysql_error());

Tutaj instrukcja SQL jest budowana przez podzielenie zdania na małe części, a następnie połączenie ich w zmienną $strSQL.

W praktyce nie ma różnicy w zastosowaniu jednego lub drugiego, ale podczas pracy z dużymi stołami umiejętność „śledzenia” staje się niezwykle ważna, dlatego wybierz najbardziej odpowiednią metodę.

Spróbujmy wykonać następujący kod, aby wstawić Gus Goose do bazy danych:

Wstawianie danych do bazy danych // Połącz się z serwerem bazy danych mysql_connect("mysql.myhost.com", "użytkownik", "sezam") or die(mysql_error());// Wybierz bazę danych mysql_select_db("mojabaza danych") or die(mysql_error()); // Tworzenie instrukcji SQL $strSQL = "WSTAW DO osób("; $strSQL = $strSQL . "Imię"; $strSQL = $strSQL . "Nazwisko"; $strSQL = $strSQL . "telefon"; $strSQL = $strSQL . "Data urodzenia)"; $strSQL = $strSQL . "WARTOŚCI("; $strSQL = $strSQL . "Gus", "; $strSQL = $strSQL . ""Gęś", "; $strSQL = $strSQL . ""99887766", "; $strSQL = $strSQL . ""1964-04-20""; // Wykonywana jest instrukcja SQL mysql_query($strSQL) lub die(mysql_error()); // Zamykanie połączenia mysql_close(); ?>

Zaktualizowano bazę danych!

Zapisywanie danych wprowadzonych przez użytkownika w bazie danych

Prawdopodobnie już zorientowałeś się, że możesz stworzyć do tego formularz, tak jak w Lekcji 11, a wartości z formularza można wstawić do instrukcji SQL. Powiedzmy, że masz prosty formularz:

Ten formularz jest przesyłany do pliku wstaw.php gdzie, jak pokazano w Lekcji 11, możesz uzyskać dane wejściowe od użytkownika, żądając treści formularza. W tym konkretny przypadek Instrukcja SQL może wyglądać następująco:

strSQL = "INSERT INTO people(FirstName) values("" . $_POST["FirstName"] . "")"

Podobnie możesz żądać danych dla plików cookie, sesji, ciągów zapytań itp.

Najczęstsze błędy początkujących

Na początku prawdopodobnie pojawi się kilka komunikatów o błędach podczas próby aktualizacji bazy danych. Podczas pracy z bazą danych absolutnie nie do przyjęcia są żadne błędy. Nieprawidłowo umieszczony przecinek może oznaczać, że baza danych nie jest aktualizowana i pojawi się komunikat o błędzie. Poniżej opisujemy najczęstsze błędy.

Nieprawidłowy typ danych

Ważne jest, aby dane i typ danych w kolumnie były zgodne. Każda kolumna może zawierać dane określonego typu. Poniższy zrzut ekranu przedstawia typy danych tabeli „ludzie” z naszego przykładu.

Błąd jest zgłaszany, jeśli na przykład spróbujesz wstawić tekst lub liczbę do pola danych. Dlatego należy ustawić typ danych tak dokładnie, jak to możliwe.

Poniżej wymieniono najczęściej używane typy danych:

Oznaczający Typ danych Rozmiar
CHR
Tekst lub kombinacja tekstu i liczb. Może być również używany do liczb nieużywanych w obliczeniach (np. numery telefonów). Do 255 znaków — dowolna długość określona w polu „Długość”
TEKST
Duże bloki tekstu lub kombinacja tekstu i liczb. Do 65 535 znaków
INT
Dane liczbowe do obliczeń matematycznych. 4 bajty
DATA
Daty w formacie RRRR-MM-DD 3 bajty
CZAS
Czas w formacie hh:mm:ss 3 bajty
DATAGODZINA
Data i godzina w formacie YYY-MM-DD hh:mm:ss 8 bajtów

Instrukcje SQL z cudzysłowami lub odwrotnymi ukośnikami

Jeśli spróbujesz wkleić tekst zawierający pojedyncze cudzysłowy ("), podwójne cytaty(") lub odwrotny ukośnik (\), rekord nie zostanie wstawiony do bazy danych. Rozwiązaniem jest zastąpienie odwrotnych ukośników przed znakami, które mają być mnemonizowane przy wstawianiu do zapytań do bazy danych.

W tej lekcji nauczymy się jak wprowadzić do bazy MySql dane wprowadzone przez użytkownika w formularzu. Dowiesz się, jak połączyć się z bazą danych MySql z poziomu kodu strony internetowej oraz jak przetwarzać i wprowadzać dane do bazy.


Na ostatniej lekcji powiedziałem ci, jak zainstalować Denver na swoim komputerze, jak stworzyć własną bazę danych, użytkownika do niej, jak stworzyć tabelę w bazie danych i wypełniliśmy ją jednym rekordem.

W tym samouczku utworzymy dokument html aby wprowadzić informacje o użytkowniku i plik php- procesor tych informacji, który będzie przetwarzał dane, łączył się z bazą danych MySql i wstawiał tam nowe rekordy.

Przechodząc od słów do czynów, zaczynajmy.

Dodawanie danych użytkownika do bazy danych MySql ze strony internetowej

Pierwszy krok: utwórz formularz HTML do wprowadzania danych

Od samego początku musimy przygotować się do pracy z php, MySql oraz przetestować napisany kod komputer lokalny. Dla tego:

1. Uruchom Denwer na swoim komputerze.

2. otwarty dysk wirtualny, utworzony przez Denver (na przykład mój dysk to „Z”). Otwórz go, a następnie: home - localhost - www - utwórz go tam nowy folder i nadaj mu nazwę (nazwę go „db1”).

3. Jeśli pracujesz w Adobe Dreamweaver, przejdź do menedżera witryny, tam kliknij przycisk „Nowy”, jako ścieżkę wybierz ścieżkę do nowo utworzonego folderu, w polu powyżej możesz podać nazwę witryny, a następnie kliknij Zapisz — gotowe. Po tym wszystkim twój folder pojawi się w prawym okienku Adobe Dreamweaver.

1. Teraz utworzymy regularny plik HTML(nazwijmy go info_form.html i zapiszmy w nowo utworzonym folderze db1) i wpiszmy tam kod formularza do wprowadzania informacji. W naszej tabeli użytkowników bazy danych new_db znajdują się 4 pola, które użytkownik może wypełnić (pole id zostanie wypełnione automatycznie). Na tej podstawie możesz stworzyć następujący kod:

Nienazwany dokument










Tutaj w parametrze „action” naszego formularza rejestrowany jest plik formularz.php. Będzie to plik obsługi, który utworzymy jako następny.

Utwórzmy również plik style.css, aby nadać styl naszemu formularzowi. Jest już zawarty w kodzie, więc pozostaje tylko go utworzyć, umieścić w tym samym folderze co plik html i napisać w nim następujący kod:

Body(szerokość: 400px; margines: 0 auto; tło: #F8F4B6;) etykieta (wyświetlanie: blok; zmiennoprzecinkowy: lewy; szerokość: 150px; dopełnienie: 0 10px; margines: 18px 0 0; wyrównanie tekstu: prawy;) # prześlij (zmiennoprzecinkowy: prawy; margines: 5 pikseli 50 pikseli 10 pikseli 0;)

Teraz formularz wygląda tak:

Jeśli jednak wprowadzisz dane i spróbujesz przesłać formularz, zobaczysz błąd, ponieważ w katalogu scripts nie ma pliku form.php.

Naszym kolejnym zadaniem jest utworzenie pliku obsługi.

2. Wejdźmy do folderu db1 utwórz folder o nazwie skrypty. W nim zapiszemy wszystkie nasze skrypty do interakcji z bazą danych MySql.

Po utworzeniu folderu utwórz nowy php plik i zapisz go w folderze scripts jako formularz.php.

Zanim jednak zajmiemy się bezpośrednio plikiem przetwarzania informacji, musimy najpierw połączyć się z naszą bazą danych. Proponuję stworzyć w tym celu osobny plik i własnie dlatego:

Najprawdopodobniej w Twoim projekcie będziesz musiał łączyć się z bazą danych MySql nie tylko z jednego pliku. Z reguły wejdź w interakcję z bazą danych różne pliki projekt.
Zapisywanie tego samego kodu połączenia z bazą danych w każdym takim pliku jest bardzo niepraktyczne. A jeśli jest np. 50 takich plików i pewnego pięknego dnia zmieniasz hasło dla użytkownika i musisz szukać tych wszystkich 50 plików i w każdym z nich wprowadzać poprawki.
O wiele wygodniej jest użyć osobnego pliku do połączenia, który zostanie podłączony do każdego z plików, w których powinno być połączenie z bazą MySql. W takim przypadku będziesz musiał wprowadzić poprawki tylko w jednym pliku.

Stwórzmy więc nowy plik php, nazwijmy go połącz.php i umieść w folderze dla skryptów. Napiszemy w nim kod do łączenia się z naszą bazą danych MySql, a także kod, który zgłosi błędy, jeśli wystąpią. Pamiętaj, że jako parametry będziesz musiał wprowadzić swoją nazwę użytkownika, hasło i nazwę bazy danych. Host musi być hostem lokalnym.

Błąd łączenia z bazą danych! " .mysql_error() . "

"); mysql_select_db("new_db")//parametr w nawiasach ("nazwa bazy danych do połączenia") lub die("

Błąd wyboru bazy danych! ". mysql_error() . "

"); ?>

Przejdźmy teraz do pliku form.php i dołączmy do niego plik connect.php, używając następującego kodu:

Jeśli spróbujesz przesłać formularz teraz, po przesłaniu zobaczysz pustą stronę internetową. Jest to normalne, ponieważ właśnie połączyliśmy się z bazą i na razie nie wyświetlamy niczego innego.

Jeśli zobaczysz komunikat o błędzie, sprawdź, czy wszystkie parametry (nazwa użytkownika, hasło, nazwa hosta: localhos, nazwa bazy danych) są poprawne, a także upewnij się, że Denver jest włączony.

3. Pomyślnie połączyliśmy się z bazą danych MySql, a teraz musimy to zrobić zaakceptować dane wprowadzone w formularzu w naszym pliku obsługi. Pomogą nam w tym atrybuty „nazwa”, które są obecne w dokumencie html.

Aby uzyskać dane, używamy specjalnego zmienna php, która dostarcza nam wszystkich informacji z formularza internetowego. Ta zmienna nosi nazwę „$_REQUEST”.

Wpisz następujący kod w pliku form.php po podłączeniu pliku connect.php:

$imię = $_REQUEST["imię"]; $nazwisko = $_REQUEST["nazwisko"]; $e-mail = $_REQUEST["e-mail"]; $facebook = $_REQUEST["facebook"];

4. Otrzymaliśmy dane w pliku i wprowadziliśmy je do zmiennych. Teraz potrzebujesz wyślij te dane do naszej tabeli bazy danych MySql. Aby to zrobić, musisz napisać poniższy kod:

$insert_sql = "WSTAW DO użytkowników (imię, nazwisko, e-mail, facebook)" . "VALUES("($first_name)", "($last_name)", "($email)", "($facebook)");"; mysql_query($insert_sql);

Tutaj najpierw tworzymy zapytanie, mówiące, że musimy wstawić odpowiednie zmienne w odpowiednie pola tabeli „users”. Wprowadzamy to zapytanie do zmiennej „$insert_sql”. A następnie za pomocą specjalnej funkcji mysql_query wykonujemy to zapytanie.

Jeśli teraz wypełnisz i wyślesz formularz, a następnie zajrzysz do tabeli „użytkownicy” swojej bazy danych, zobaczysz nowy wpis, który pojawił się tam po przesłaniu.

5. Wstawiliśmy nowy rekord ze strony internetowej do tabeli bazy danych MySql. Teraz chcę trochę dotknąć formatu, w którym wstawiane są nasze dane.

W pierwszej kolejności należy zadbać o to, aby osoba wypełniająca formularz nie wstawiała zbędnych spacji na początku wpisywania informacji. Trzeba je ciąć.

Po drugie mamy pole na Facebooka. Jeśli później będziemy chcieli wyświetlić te informacje jako link, musimy zadbać o to, aby dane w tym polu były przechowywane w odpowiednim formacie (tj. „http://www.facebook.com/facebook id”). Ale użytkownik nie zawsze wprowadzi te dane tak, jak potrzebujemy. Może wpisać: „www.facebook.com/facebook id”, „facebook.com/facebook id” lub po prostu „/facebook id”.

Takich sytuacji należy unikać. W tym celu poprawmy nasz kod. Ewentualne dodatkowe spacje odetniemy za pomocą funkcji przycinać, a funkcja sprawdzi poprawność wprowadzonego adresu URL dla facebooka preg_match. Tym samym cały kod pliku form.php będzie wyglądał następująco:

Nienazwany dokument Do bazy został dodany nowy wpis!

"; ?>

O funkcji preg_match:
Jest to funkcja do wyszukiwania za pomocą wyrażeń regularnych.

Pierwszym parametrem w nawiasach jest Wyrażenie regularne, drugi jest ciągiem do wyszukania.

Funkcja zwraca tylko pierwsze dopasowanie: 0 w przypadku braku dopasowań, 1 w przypadku dopasowania.

Spróbuj teraz celowo wypełnić formularz, wstawiając niepotrzebne spacje na początku wypełniania jednego z pól i wpisując adres do facebooka bez http:// lub wpisując w całości sam identyfikator facebooka. Wyślij zapytanie, a następnie przejdź do bazy, a zobaczysz, że mimo nie do końca poprawnego wypełnienia dane mają dokładnie taką postać, jakiej potrzebujemy.

na tym zakończę ta lekcja. Możesz pobrać wszystkie pliki tej lekcji w kodzie źródłowym (tylko nie zapomnij zmienić parametrów na własne w pliku connect.php).

A na następnej lekcji nauczymy się jak wydobywać informacje z bazy MySql, wybierać potrzebne rekordy i wyświetlać je na ekranie. Aby nie przegapić następnej lekcji, subskrybuj aktualizacje bloga, korzystając z formularza subskrypcji, który widzisz poniżej.

Zostaw swoje komentarze i podziel się nimi ze znajomymi za pomocą przycisków mediów społecznościowych.

Powodzenia i do zobaczenia na kolejnej lekcji!

Ostatnia aktualizacja: 1.11.2015

Aby dodać dane, używane jest wyrażenie „INSERT”:

$query ="WSTAWIĆ DO WARTOŚCI towarów (NULL, " galaktyka samsunga III","Samsumg"";

Instrukcja „INSERT” wstawia jeden wiersz do tabeli. Później słowo kluczowe INTO określa nazwę tabeli, a po WARTOŚCI zestaw wartości dla wszystkich kolumn jest określony w nawiasach. Ponieważ w tabeli mamy trzy kolumny, podajemy trzy wartości.

Ponieważ w poprzednim temacie podczas tworzenia tabeli określiliśmy następującą kolejność kolumn: id, nazwa, firma, w tym przypadku dla kolumny id przekazywana jest NULL, a dla nazwy „Samsung” Galaktyka III", a dla firmy - "Samsumg".

Ponieważ kolumna id jest zdefiniowana jako AUTO_INCREMENT, nie musimy określać dla niej określonej wartości liczbowej i możemy przekazać wartość NULL, a MySQL przypisze kolumnie następną dostępną wartość.

Przyjrzyjmy się teraz dodawaniu danych na przykładzie. Stwórzmy plik utwórz.php o następującej treści:

Dodano dane"; ) // zamknięcie połączenia mysqli_close($link); ) ?>

Dodaj nowy model

Podaj model:

Producent:

Tutaj kod interakcji z bazą danych jest połączony z funkcjonalnością formularzy: za pomocą formularza wprowadzamy dane, które mają zostać dodane do bazy danych.

Bezpieczeństwo i MySQL

Tutaj użyliśmy funkcji mysqli_real_escape_string(). Służy do ucieczki znaków w łańcuchu, który jest następnie używany w zapytaniu SQL. Przyjmuje jako parametry obiekt połączenia i ciąg znaków do zmiany znaczenia.

Tak więc w rzeczywistości używamy podwójnej ucieczki znaków: najpierw dla wyrażenia sql za pomocą funkcji mysqli_real_escape_string() , a następnie dla html za pomocą funkcji htmlentities() . Pozwoli nam to zabezpieczyć się przed dwoma rodzajami ataków jednocześnie: atakami XSS i iniekcjami SQL.

W tym przewodniku dowiesz się, jak rozpocząć zarządzanie bazą danych od swojego PHP scenariusz. nauczysz się dodanie rekordu do tabeli MySQL, za pomocą kod php. Zanim zaczniesz, zapoznaj się z naszymi innymi samouczkami, które obejmują podstawowe kroki pracy z PHP i bazami danych — łączenie PHP z bazą danych MySQL.

Przed rozpoczęciem sprawdź, czy:

  • Dostęp do panelu sterowania hostingu

Krok 1 — Tworzenie tabeli

Przede wszystkim musimy utworzyć tabelę dla Twoich danych. Jest to bardzo prosta procedura, którą możesz wykonać phpMyAdmin z panelu sterowania hostingu. Omówiliśmy już proces tworzenia bazy danych MySQL w poprzednim samouczku, więc pominiemy ten punkt tutaj.

Po wejściu na stronę phpMyAdmin zobaczysz podobny obrazek:

Stwórzmy tabelę o nazwie Studenci dla naszej bazy danych u266072517_nazwa. Możesz utworzyć nową tabelę, klikając przycisk Utwórz tabelę. Po tym zobaczysz Nowa strona gdzie możesz wprowadzić wszystkie wymagane dane do swojej tabeli:

Jest to najłatwiejszy sposób na utworzenie tabeli. Aby uzyskać więcej informacji na temat struktury tabeli/bazy danych oraz ustawień, których można użyć dla każdego pola, zapoznaj się z oficjalną dokumentacją phpMyAdmin.

Oto kilka prostych objaśnień pól, których będziemy używać:

  • Nazwa to nazwa twojej dziedziny. Zostanie wyświetlony na samej górze twojego stołu.
  • rodzaj– tutaj możesz ustawić typ pola. Wybieramy np varchar, ponieważ tutaj musimy wpisać ciąg z nazwą (która ma litery, a nie cyfry).
  • Długość/Wartości– służy do ustawienia maksymalnej długości twojego rekordu w tym polu.
  • Indeks– używamy indeksu „Primary” dla naszego pola „ID”. Podczas tworzenia tabeli zaleca się posiadanie jednego pola ID. Służy do indeksowania rekordów w tabeli, gdy ustawione są relacje między tabelami. Można to również zauważyć tutaj „A_I”, co znaczy Automatyczny przyrost. To ustawienie automatycznie zwiększy indeks (1,2,3,4…).

Kliknij Ratować a twoja tabela zostanie utworzona.

Krok 2 — Generowanie kodu PHP i dodanie rekordu do tabeli MySQL

Opcja 1 — metoda MySQLi

Przede wszystkim należy nawiązać połączenie z bazą danych, zgodnie z naszym poprzednim poradnikiem. Następnie możemy kontynuować zapytanie SQL, aby dodać rekord do tabeli MySQL − WSTAWIĆ. Oto kompletny przykład kodu z połączeniem i metodą wstawiania:

" . mysqli_error($conn); ) mysqli_close($conn); ?>

Tak więc pierwsza część kodu (lines 3 – 18 ) są częścią nawiązywania połączenia z bazą danych. Nie będziemy ponownie przechodzić przez tę część, jeśli chcesz wiedzieć, co oznacza każda linia, zapoznaj się z naszym poprzednim samouczkiem dotyczącym łączenia się z bazą danych.

Zacznijmy od linii 19 :

$ sql = "INSERT INTO Studenci (imię, nazwisko, adres e-mail) WARTOŚCI ("Thom", "Fiolka", " [e-mail chroniony]")";

To najważniejsza linijka kodu, robi wszystko to, co opisujemy w tym samouczku - dodaje wpis w tabeli MySQL do bazy danych. WŁÓŻ W jest wyrażeniem, które dodaje rekord do określonej tabeli bazy danych MySQL. W naszym przykładzie dodajemy dane do tabeli Studenci.

Idąc dalej, w nawiasach definiujemy pola tabeli, wartości, do których dodamy: (imię, nazwisko, e-mail). Dane zostaną dodane w określonej kolejności. Jeśli piszemy (e-mail, nazwisko, imię), wartości zostaną dodane w innej kolejności.

Dalsza część wartości WARTOŚCI. Tutaj ustawiamy nasze wartości na wcześniej określone pola. W ten sposób każde pole otrzyma swoją własną wartość. Na przykład w naszym przypadku byłoby to coś takiego: imię=Thom, nazwisko=Fiolka, e-mail= [e-mail chroniony] .

Należy zauważyć, że tutaj tworzymy zapytanie SQL przy użyciu kodu PHP. Zapytania SQL muszą być ujęte w cudzysłowy. W naszym przykładzie wszystko pomiędzy cudzysłowami i po $sql = jest zapytaniem SQL.

Dalsza część kodu ( 20 – 22 line) uruchamia nasze zapytanie i sprawdza, czy zapytanie się powiodło:

If (mysqli_query($conn, $sql)) ( echo "Nowy rekord utworzony pomyślnie"; )

Jeśli zapytanie zostało wykonane poprawnie, zostanie wyświetlony komunikat o powodzeniu.

I ostatnia część 22 – 24 linie) pokaż kolejną wiadomość, na wypadek gdyby nasze żądanie się nie powiodło:

Inaczej ( echo "Błąd: " . $sql . "
" .mysqli_error($conn); )

Ten kod wyświetla nam komunikat o błędzie na wypadek, gdyby coś poszło nie tak.

Wariant 2 — metoda obiektowa danych PHP (obiekt danych P HP)

Podobnie jak w poprzednim przykładzie, musimy najpierw nawiązać połączenie z bazą danych, co jest wykonywane podczas tworzenia nowego obiektu PDO - poprzedni tutorial wyjaśnia, jak to zrobić. Ponieważ połączenie z bazą danych MySQL jest obiektem PDO, musimy użyć różnych „metod” PDO (rodzaj funkcji, które są częścią konkretnego obiektu), aby przygotować i uruchomić zapytanie. Metody obiektowe są wywoływane w następujący sposób:

$the_Object->the_Method();

PDO pozwala na „przygotowanie” kodu SQL przed jego wykonaniem. Zapytanie SQL jest oceniane i dostosowywane przed uruchomieniem. A więc prosty atak wg wstrzyknięcie SQL można to zrobić poprzez wpisanie kodu SQL w polu formularza. Na przykład:

// Użytkownik zapisuje to w polu nazwy użytkownika w formularzu logowania thom"; DROP DATABASE tabela_użytkowników; // Końcowe zapytanie wygląda następująco: "SELECT * FROM tabela_użytkowników WHERE nazwa_użytkownika = tom"; DROP DATABASE tabela_użytkowników;

Ponieważ kod SQL jest poprawny składniowo, średnik tworzy DROP DATABASE user_table nowe zapytanie SQL, a tabela użytkownika zostanie usunięta. Przygotowane wyrażenia nie zezwalają na znaki oraz ; wypełnić pierwotne żądanie i instrukcję USUŃ BAZY DANYCH nigdy nie zostanie wykonany.

Jest zawsze korzystać z przygotowanych zapytań podczas wysyłania lub odbierania danych z bazy z PDO.

Aby skorzystać z przygotowanych wyrażeń, należy utworzyć nową zmienną, która wywoła metodę przygotować() na obiekcie bazy danych.

Prawidłowy kod wygląda następująco:

$servername = "mysql.hostinger.com"; $database = "u266072517_name"; $ nazwa_użytkownika = "u266072517_użytkownik"; $hasło = "kupowanie rzeczy"; $sql = "mysql:host=$nazwaserwera;nazwadb=$baza danych;"; $dsn_Options = ; // Utwórz nowe połączenie z bazą danych MySQL za pomocą PDO, $my_Db_Connection jest obiektem try ( $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Połączono pomyślnie"; ) catch (PDOException $ error) ( echo "Błąd połączenia: " . $error->getMessage(); ) // Ustaw zmienne dla osoby, którą chcemy dodać do bazy danych $first_Name = "Thom"; $last_Name = "Fiolka"; $e-mail = " [e-mail chroniony]"; // Tutaj tworzymy zmienną, która wywołuje metodę prepar() obiektu bazy danych // Zapytanie SQL, które chcesz uruchomić, jest wprowadzane jako parametr, a symbole zastępcze są zapisywane w następujący sposób:placeholder_name $my_Insert_Statement = $my_Db_Connection-> prepar("INSERT INTO Uczniów (imię, nazwisko, e-mail) VALUES (:first_name, :last_name, :email)"); // Teraz mówimy skryptowi, do której zmiennej faktycznie odnosi się każdy symbol zastępczy, używając metody bindParam() // Najpierw parametr jest symbolem zastępczym w powyższej instrukcji - drugi parametr jest zmienną, do której powinien się odwoływać $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement-> bindParam(:email, $email); // Wykonaj zapytanie używając danych, które właśnie zdefiniowaliśmy // Metoda execute() zwraca TRUE, jeśli się powiedzie i FALSE, jeśli się nie powiedzie, umożliwiając pisanie tutaj własnych wiadomości, jeśli ( $my_Insert_Statement->execute()) ( echo "Nowy rekord utworzony pomyślnie"; ) el se ( echo "Nie można utworzyć rekordu"; ) // W tym momencie możesz zmienić dane zmiennych i wykonać ponownie, aby dodać więcej danych do bazy danych $first_Name = "John"; $last_Name = "Kowalski"; $e-mail = " [e-mail chroniony]"; $my_Insert_Statement->execute(); // Wykonaj ponownie teraz, gdy zmienne uległy zmianie if ($my_Insert_Statement->execute()) ( echo "Nowy rekord został pomyślnie utworzony"; ) else ( echo "Nie można utworzyć rekordu"; )

W liniach 28, 29 i 30 używamy metody parametr wiązania() obiekt bazy danych. Jest też metoda wartość wiązania(), inny niż poprzedni.

  • bindParam() - ta metoda zlicza dane, gdy metoda wykonać() osiągnięte. Pierwszy raz skrypt dociera do metody wykonać() on to widzi $imię odwołuje się do „Thom”, wiąże tę wartość i wykonuje zapytanie. Kiedy skrypt dostaje się po raz drugi do metody wykonać() on tak wygląda $imię odwołuje się teraz do „John”, wiąże tę wartość i ponownie uruchamia zapytanie z nową wartością. Ważne jest, aby zrozumieć, że raz tworzymy żądanie, a następnie podstawiamy różne dane w różnych miejscach skryptu.
  • bindValue() - ta metoda ocenia dane, gdy tylko kolejka je osiągnie. Od wartości $imię został podany jako „Thom”, w momencie, gdy dotarliśmy do metody wartość wiązania(), będzie używany podczas wywoływania metody wykonać() dla $my_Insert_Statement.

Zauważ, że ponownie używamy zmiennej $imię i nadać mu nową wartość po raz drugi. Jeśli sprawdzisz swoją bazę danych po uruchomieniu tego skryptu, obie podane nazwy będą tam, pomimo wartości zmiennej $imię będzie równe "John" na końcu tego skryptu. Pamiętaj, że PHP ocenia zawartość skryptu przed jego uruchomieniem.

Jeśli zmienisz swój skrypt, zastępując parametr wiązania na Wartość powiązania, dwukrotnie dodasz „Thom Vial” do bazy danych MySQL, a Jan Kowalski zostanie zignorowany.

Krok 3 — sprawdzanie powodzenia i rozwiązywanie typowych problemów

Jeśli zapytanie, które uruchomiliśmy w bazie danych MySQL, powiodło się, zobaczymy następujący komunikat:

Rozwiązywanie typowych błędów

MySQLi

W każdym innym przypadku zamiast powyższego komunikatu zostanie wyświetlony komunikat o błędzie. Na przykład zróbmy jeden błąd składniowy w naszym kodzie i otrzymamy to:

Jak widzimy, pierwsza część kodu jest ok, połączenie zostało pomyślnie nawiązane, ale nasze zapytanie SQL nie powiodło się podczas wykonywania.

„Błąd: WSTAW DO Uczniów (imię, nazwisko, adres e-mail) WARTOŚCI („Thom”, „Fiolka”, „ [e-mail chroniony]") Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL, aby uzyskać właściwą składnię blisko "(imię, nazwisko, adres e-mail) VALUES ("Thom", "Vial", " [e-mail chroniony]")" w linii 1"

Wystąpił błąd składni, który powoduje niepowodzenie naszego skryptu. Błąd był tutaj:

$ sql = "INSERT INTO Studenci (imię, nazwisko, adres e-mail) WARTOŚCI ("Thom", "Fiolka", " [e-mail chroniony]")";

Jak widać, używamy nawiasów klamrowych zamiast okrągłych. Jest to nieprawidłowe i skutkuje błędem składniowym w naszym skrypcie.

ChNP

W linii 7 połączenia PDO tryb obsługi błędów jest ustawiony na „wyświetl wszystkie wyjątki”. Jeśli usuniesz to ze skryptu, a żądanie się nie powiedzie, nie otrzymasz żadnego komunikatu o błędzie. Po włączeniu wyjątków zostaną wyświetlone konkretne napotkane problemy. Ogólnie rzecz biorąc, najlepiej jest to wykorzystać podczas opracowywania skryptu, ponieważ może ujawnić nazwy baz danych i tabel, które chciałbyś ukryć przed kimkolwiek, kto może uzyskać nieautoryzowany dostęp do Twoich danych. W powyższym przypadku, gdy zamiast nawiasów okrągłych użyto nawiasów klamrowych, błąd wygląda jak poniżej:

Błąd krytyczny: Nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE: Błąd składni lub naruszenie zasad dostępu: 1064 Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL, aby uzyskać właściwą składnię do użycia w pobliżu "(imię, nazwisko, adres e-mail) VALUES ("Thom", "Vial", " [e-mail chroniony]")" w linii 1"

Inne problemy, które możesz napotkać:

  • Nieprawidłowo określone pola (nieistniejące pola lub błędy ortograficzne).
  • Niezgodność typu wartości z typem pola. Na przykład, gdy chcemy przypisać wartość liczby 47 pole Nazwa, otrzymamy błąd, ponieważ wartość powinna być łańcuchem. Ale jeśli podasz liczbę w cudzysłowie, np. “47” , nie będzie błędu, ponieważ nasza liczba zostanie wpisana jako ciąg znaków w tym polu.
  • Podjęto próbę wprowadzenia danych do tabeli, która nie istnieje lub błąd pisowni w nazwie tabeli.

Wszystkie te błędy można naprawić, postępując zgodnie z instrukcjami rozwiązywania problemów lub sprawdzając dziennik błędów.

Po pomyślnym dodaniu danych powinniśmy zobaczyć je w naszej bazie danych. Oto przykład tabeli, w której dodaliśmy nasze dane, jak widać w phpMyAdmin.

Wniosek

W tym przewodniku nauczyłeś się, jak używać Kod PHP, aby dodać rekord do tabeli MySQL za pomocą MySQLi oraz ChNP. Rozważono również przypadki typowych błędów i ich rozwiązania. Wiedza o tym, jak używać kodu PHP do dodawania do bazy danych MySQL, przyda się niezależnie od tego, czy uczysz się kodować, czy już budujesz własną stronę internetową.

W tym poście chcę powiedzieć jak przenieść do bazy dane wprowadzone w formularzu. I tak tworzymy prosty formularz, w którym będziemy mieli dwa pola: nazwę użytkownika i jego E-mail:

Twoje imię:
Twój email:


Formularz ten może służyć do rejestracji nowego użytkownika, wysyłania wiadomości, zbierania statystyk i do wszystkiego... Ogólnie rzecz biorąc, użytkownik wypełnia ten formularz swoimi danymi: imię i adres e-mail, klika przycisk, a następnie dane trafiają do skryptu php:

$nazwa = $_POST["nazwa"]; $e-mail = $_POST["e-mail"]; $result = mysqli_query("WSTAW DO użytkownika (nazwa, adres e-mail) WARTOŚCI ("$nazwa", "$e-mail")"); if ($result) ( echo "Dane zostały pomyślnie zapisane!"; ) else ( echo "Wystąpił błąd, spróbuj ponownie."; )


Co się dzieje w tym skrypcie? Teraz wymyślmy to!
Dane wprowadzone w formularzu Metoda POST przejdź do skryptu php (który jest napisany powyżej) i używając globalnej tablicy $_POST, dane są formowane w zmienne $name i $email:

$nazwa = $_POST["nazwa"]; $e-mail = $_POST["e-mail"];


Gdy zmienne są gotowe do wprowadzenia do bazy danych, tworzymy zapytanie. Ale najpierw twoje skrypty muszą być już podłączone do bazy danych, jak połączyć się z bazą pisałem w tym wątku:. Samo żądanie wygląda następująco:

$result = mysqli_query("WSTAW DO użytkownika (nazwa, adres e-mail) WARTOŚCI ("$nazwa", "$e-mail")");


W tym kodzie zaznaczyliśmy, że do komórek nazwy i adresu e-mail w tabeli użytkownika zostaną dodane następujące zmienne: $name i $email .
Ponadto, jeśli wszystko poszło dobrze, otrzymamy wiadomość od warunku:

Dane zapisane pomyślnie!


Jeśli wystąpiły problemy i dane nie zostały wprowadzone, otrzymamy komunikat o błędzie:

Wystąpił błąd. Proszę spróbować ponownie.


To wszystko!

*** *** *** *** ***

W razie potrzeby możesz dodać więcej pól do wprowadzania informacji, na przykład musimy dodać pole do wpisania miasta użytkownika. Mamy już gotowy skrypt (napisany powyżej), teraz wystarczy dodać pole Twoje miasto, nazwijmy zmienną: $city . I tak w formularzu wprowadzania danych po:

Twój email:


Dodaj:

Twoje miasto:


W skrypt php, po:

$e-mail = $_POST["e-mail"];


Dodaj:

$miasto = $_POST["miasto"];


I oczywiście dodajemy to również do żądania, tak jak poniżej:

$result = mysqli_query("WSTAW DO użytkownika (nazwa, adres e-mail, miasto) WARTOŚCI ("$nazwa", "$e-mail", "$miasto")");


Oto jaki powinien być efekt końcowy:
Formularz wejściowy:

Twoje imię:
Twój email:
Twoje miasto:


Scenariusz:

$nazwa = $_POST["nazwa"]; $e-mail = $_POST["e-mail"]; $miasto = $_POST["miasto"]; $result = mysqli_query("WSTAW DO użytkownika (nazwa, adres e-mail, miasto) WARTOŚCI ("$nazwa", "$e-mail", "$miasto")"); if ($result == true) ( ​​echo "Dane zostały pomyślnie zapisane!"; ) else ( echo "Wystąpił błąd, spróbuj ponownie."; )


Jak widać, nic skomplikowanego! W razie potrzeby możesz dodać kolejne pole i kolejne i kolejne ...