Menu
Jest wolny
rejestracja
Dom  /  Nawigatorzy/ Dodawanie do mysql przez php. Jak pisać do bazy danych MySQL za pomocą kodu PHP

Dodawanie do mysql przez php. Jak pisać do bazy danych MySQL za pomocą kodu PHP

Komentarze przeniesione z bloga

SERGEI
14.09.2016 o 01:25
Dzień dobry!
Interesuje mnie to pytanie: jak najłatwiej zorganizować przechowywanie danych i ustawień programu bez korzystania z bazy danych? Nie chcę być przywiązany do MySQL lub Access..

ADMINISTRATOR
14.09.2016 o 22:14
Witam!

Właściwości.Ustawienia
Konfiguracja aplikacji
plik XML
serializacja
Spróbuj wybrać coś z listy.

NIKOLAJ
16.09.2016 o 02:28
Witam, jak usunąć wybrany wiersz w dataGridVIew z dataGridVIew i phpMyAdmin.

PhpMyAdmin? To tylko powłoka do pracy z bazą danych, czy możesz to wyjaśnić?

NIKOLAJ
18.09.2016 o 02:24
musisz usunąć wybrany wiersz z DataGridView i bazy danych.

ADMINISTRATOR
19.09.2016 o 07:00
Jak usunąć wiersz w bazie Mysql - dodany artykuł.

NIKOLAJ
09/20/2016 o 09:20
Wielkie dzięki.

DIMA
20.09.2016 o 10:24
Witam, czy możesz? tą drogą implementować nie przez DataGridView, ale przez ComboBox? Jeśli tak to jak? Dziękuję Ci.

ADMINISTRATOR
22.09.2016 o 03:21
Dzień dobry. Przykład:

GENNADY
22.09.2016 o 18:25
dlaczego wprowadzam następujący tekst do bazy danych System.Windows.Forms.TextBox, Text: ge

Swoją drogą to jest (ge) na końcu jest zapisany gen, mimo że tekst jest określony w ustawieniach tabeli.Słowo genu powinno pasować dalej, wprowadzam tę tabelę do mojego programu i okazuje się, że wyświetla mi cały ten niepotrzebny tekst

ADMINISTRATOR
24.09.2016 o 04:17
Najprawdopodobniej zapytanie SQL jest napisane niepoprawnie, na przykład:

W textBox1 wpisz nazwę: Gena.

Zapytanie Sql: "Wstaw do tabeli wartości nazw (textBox1, ..)"; Wynik: System.Windows.Forms.TextBox

I musisz przekazać: „Wstaw do wartości nazwy tabeli (textBox1.Text, ..)”;
Wynik: Gene

GENNADY
24.09.2016 o 18:41
Tak to jest. Dziękuję Ci

SERGEI
25.09.2016 o 11:51
Dzień dobry. Jak zaimplementować dodawanie do bazy danych przez textBox?

ADMINISTRATOR
26.09.2016 o 20:53
W zasadzie wszystko jest takie samo. Na przykład weźmy ostatni przykład, w którym potrzebujesz:

// utwórz parametry i dodaj je do kolekcji cmd.Parameters.AddWithValue ("@ Name", textBox1.Text); cmd.Parameters.AddWithValue („@ LastName”, textBox2.Text);

teraz parametry: Name i LastName otrzymują wartości wpisane w pola tekstowe i przenoszą je do bazy danych

LINARA
27.09.2016 o 17:45
Witam, jak wygląda podświetlony wiersz w dataGridVIew i phpMyAdmin?

ADMINISTRATOR
29.09.2016 o 02:06
Nie wiem, jak można zrobić podświetloną linię w phpMyAdmin. Na przykład w dataGridView można to zrobić za pomocą zdarzenia SelectionChanged.

PSH
30.09.2016 o 03:48
2 linijka:
Jeśli w ten sposób chcesz edytować ciągi, chwyć narzędzie w stylu HediSQL, dostosuj i zmodyfikuj ciągi.

2administratorzy
Dobry dzień! Dzięki za materiały - wszystko bardzo fajnie powiedziane)
Pytanie: Dodaję dane z tym zapytaniem (jest to zapytanie testowe):

String sql = "INSERT INTO users (` FIO`, `Tour`,` Count`, ` Cost`,` Date`, `Paszport`,` Birthday`) WARTOŚCI ("Kolyan", "Moskwa", "1 + 1 ", 1100", 11.11.2011 "," 1111 1111 "," 11.09.1900 ");";

Dane są wpisane wszystko ok, ale w bazie (mysql) zamiast cyrylicy są "????".

Visual Studio mówi, że System.String to sekwencja Unicode.

Próbowałem również:

ALTER BAZA DANYCH `test` UKŁADANIE" koi8r_general_ci "; ALTER TABLE `użytkownicy` COLLATE =" koi8r_general_ci "; ALTER BAZA DANYCH `test` SORTUJ" utf8_unicode_ci "; ALTER TABLE `użytkownicy` COLLATE =" utf8_unicode_ci ";

Ale to nie pomaga…
Co może być nie tak? Inne kodowanie dla VS i DB? Albo co?
Mogę wysłać co czytać/zmienić.
Dziękuję Ci

ADMINISTRATOR
01.10.2016 o 09:49
Dzień dobry.

W bazie danych (i w tabeli) zestawienie to utf_general_ci

Czy istnieje takie porównanie? Może utf8_general_ci?

Zazwyczaj bazę danych Mysql tworzy się wybierając porównanie utf8_general_ci, więc nie ma problemów z cyrylicą, o ile oczywiście klient nie przyjdzie na serwer.

Do porównań używana jest funkcja COLLATION, ale w tym przypadku ważny jest zestaw znaków. Dlatego najpierw musisz upewnić się, że jest poprawnie ustawiony na serwerze, na przykład w utf8, a nie latin1.

Podczas łączenia przez .net (domyślny) łącznik używa latin1, więc czasami musisz wyraźnie określić kodowanie utf8 w ciągu połączenia:

MySqlConnection mycon; mycon = new MySqlConnection ("serwer = 127.0.0.1; uid = vasya; pwd = 123; baza danych = test; Charset = utf8;"); // MySqlConnectionStringBuilder: mysqlCSB.CharacterSet = "utf8";

PSH
01.10.2016 o 11:34
Masz rację, sam siebie opisałeś, utf8_general_ci!
Tak to pomogło, Charset = utf8;
Wielkie dzięki!

SERGI
10.02.2016 o 11:02
Dzięki za potrzebny przykład pracy. Pytanie
Utworzyłem pole tekstowe w którym chciałbym wpisać adres IP bazy danych, ale nie wiem jak tu podstawić te dane

Konstr ciągu = " [e-mail chroniony]; użytkownik = test; "+
"baza danych = test; hasło = test;";
Proszę mi powiedzieć, jak w tej konstrukcji wstawić dane z pól tekstowych do formularza okienkowego….

ADMINISTRATOR
10.03.2016 o 11:50
"[e-mail chroniony]; użytkownik = ...
Ogólnie lepiej jest użyć właściwości, jak w tym artykule, lub metody String.Format() zamiast takiego ciągu.

OLGA2203
15.05.2017 o 20:14

String Connect = "Serwer = 127.0.0.1; Port = 3306; Baza danych = podstawa; Źródło danych = host lokalny; użytkownik = root;"; MySqlConnection con = nowe MySqlConnection (Połącz); con.Otwarte (); // Nawiąż połączenie z bazą danych. MySqlCommand cmd = new MySqlCommand (); cmd.CommandText = @ ”INSERT INTO tovar (ID, Kategoria, Nazwa, Znak Towarowy, Cena, Zdjęcie, Rozmiar, Kolor, Materiał, Liczba) WARTOŚCI (@pr, @Category, @Name, @TradeMark, @Price, @Photo, @Rozmiar, @Kolor, @Materiał, @Liczba) ”; cmd.Parameters.AddWithValue („@ pr”, licznik); cmd.Parameters.AddWithValue („Kategoria @”, comboBox1.SelectedItem.ToString ()); cmd.Parameters.AddWithValue („@ Nazwa”, textBox1.Text); cmd.Parameters.AddWithValue („@ TradeMark”, textBox2.Text); cmd.Parameters.AddWithValue („@Cena”, Convert.ToInt32 (textBox4.Text)); cmd.Parameters.AddWithValue („@ Zdjęcie”, textBox3.Text); cmd.Parameters.AddWithValue („Rozmiar @”, textBox6.Text); cmd.Parameters.AddWithValue („@ Kolor”, textBox5.Text); cmd.Parameters.AddWithValue („@Materiał”, textBox8.Text); cmd.Parameters.AddWithValue („@ Count”, Convert.ToInt32 (textBox7.Text)); cmd.Połączenie = con; cmd.ExecuteNonQuery (); MessageBox.Show („Dodawanie powiodło się”, „Dodanie powiodło się”, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

Pojawia się błąd „Identyfikator kolumny” nie może być pusty”, usuwam dodatek do kolumny ID - to samo piszę o następnej kolumnie i tak dalej.
Jeśli w nawiasach wpiszę jakieś stałe wartości w WARTOŚCI, to linia zostanie dodana do bazy.
Czy możesz mi powiedzieć, na czym polega problem? Muszę wpisać do bazy dokładnie dane i wartości wprowadzone przez formularz

Ostatnia aktualizacja: 1.11.2015

Wyrażenie „INSERT” służy do dodawania danych:

$ query = "INSERT INTO tovars VALUES (NULL," Samsung Galaxy III "," Samsumg ")";

Wyrażenie INSERT wstawia jeden wiersz do tabeli. Później słowo kluczowe INTO to nazwa tabeli, a po VALUES w nawiasach podano zestaw wartości dla wszystkich kolumn. Ponieważ w tabeli mamy trzy kolumny, wskazujemy trzy wartości.

Ponieważ w poprzednim temacie przy tworzeniu tabeli określiliśmy następującą kolejność kolumn: id, name, company, w tym przypadku wartość NULL jest przekazywana dla kolumny id, „Samsung Galaxy III” dla nazwy i „Samsumg " dla towarzystwa.

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

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

Dodano dane";) // zamknij połączenie mysqli_close ($ link);)?>

Dodaj nowy model

Wpisz model:

Producent:

Tutaj kod do interakcji z bazą danych łączy się z funkcjonalnością formularzy: za pomocą formularza wpisujemy dane, które mają zostać dodane do bazy.

Bezpieczeństwo i MySQL

Tutaj użyliśmy funkcji mysqli_real_escape_string(). Służy do ucieczki znaków w ciągu, który jest następnie używany w Zapytanie SQL... Jako parametry przyjmuje obiekt połączenia i ciąg znaków, które mają zostać zmienione.

Tak więc w rzeczywistości stosujemy dwie 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 chronić się jednocześnie przed dwoma rodzajami ataków: atakami XSS i iniekcją SQL.

W tym artykule przeanalizujemy być może niektóre z najważniejszych Zapytania SQL... Ten zapytania do dodawania i usuwania rekordów z tabeli bazy danych... Ponieważ BARDZO często jest to konieczne dodaj nowe rekordy do tabeli i zrób to w tryb automatyczny, to ten materiał jest wymagany do nauki.

Zacząć Zapytanie dołączające SQL nowe wejście na stół:

WSTAW wartości użytkowników (login, hasło) ("TestUser", "123456")

Podczas dodawania wpisu pierwsze polecenie to „ WŁÓŻ W", następnie nazwa tabeli, do której wstawiamy rekord. Następnie w nawiasach pojawiają się nazwy pól, które chcemy wypełnić. A potem w nawiasach po słowie" wartości„zaczynamy wypisywać wartości tych pól, które wybraliśmy. Po wykonaniu tego zapytania w naszej tabeli pojawi się nowy rekord.

Czasami to trwa zaktualizować rekord w tabeli, do tego jest następujące Zapytanie SQL:

UPDATE użytkowników SET login = "TestUser2", hasło = "1234560" WHERE login = "TestUser"

To zapytanie jest bardziej złożone, ponieważ ma konstrukcję „ GDZIE", ale o tym trochę niżej. Najpierw jest polecenie" AKTUALIZACJA"po której następuje nazwa tabeli, po której następuje" USTAWIĆ„opisujemy wartości wszystkich pól, które chcemy zmienić. Byłoby to proste, ale pojawia się pytanie:” Który rekord należy zaktualizować?". Do tego jest" GDZIE". W tym przypadku aktualizujemy rekord, pole" Zaloguj sie"co ma znaczenie" Użytkownik testowy„. Należy pamiętać, że jeśli takich rekordów jest kilka, to absolutnie wszystko zostanie zaktualizowane! Jest to bardzo ważne, aby zrozumieć, w przeciwnym razie ryzykujesz utratę stołu.

Porozmawiajmy trochę więcej o „ GDZIE„. Oprócz prostych testów na równość istnieją również nierówności, a także operacje logiczne: ORAZ oraz LUB.

AKTUALIZUJ użytkowników SET login = "TestUser2", hasło = "1234560" WHERE id< 15 AND login="TestUser"

ten Zapytanie SQL zaktualizuje te zapisy ID które są mniej 15 ORAZ pole " Zaloguj sie„ma znaczenie” Użytkownik testowy". Mam nadzieję, że wymyśliłeś projekt." GDZIE"bo to bardzo ważne. Dokładnie." GDZIE"używane, gdy pobieranie rekordów z tabel i jest to najczęściej używane zadanie podczas pracy z bazami danych.

I wreszcie prosty Zapytanie SQL do usunięcia rekordów z tabeli:

USUŃ Z użytkowników WHERE login = "TestUser2"

Po poleceniu „ USUŃ Z"jest nazwa tabeli, w której chcesz usunąć rekordy. Następnie opisujemy konstrukcję" GDZIE ". GDZIE”, dowolna ich liczba może zostać usunięta.


Lekcja będzie oparta na Formularz sprzężenie zwrotne wymagane w prawie każdej witrynie.

Krok pierwszy: Tworzenie bazy danych w MySQL

Otwieramy phpMyAdmin(zawarte w podstawowym pakiecie) Denwer`a) i stwórz bazę z nazwą" baza_testowa", wybierz kodowanie" cp1251_general_ci".

Krok drugi: Tworzenie tabeli w MySQL przez Zapytania SQL

Możesz oczywiście stworzyć tabelę za pomocą standardowe narzędzia phpMyAdmin, ale struktura utworzonej tabeli będzie wyraźnie widoczna.

Utwórz tabelę o nazwie „ tabela_testowa"oraz z sześcioma polami z nazwami:
"nazwa" - tutaj będą przechowywane nazwy użytkowników;
"e-mail" - tutaj będą przechowywane adresy skrzynki elektroniczne użytkownicy;
"temat" - tutaj będzie zapisany temat wiadomości;
"wiadomość" - tutaj będą przechowywane wiadomości;
"data" - tutaj będzie przechowywana data wysłania wiadomości;
"id" - numer identyfikacyjny rekordu (linii), pole klucza.

Zapytanie SQL:
utwórz tabelę test_table (
id int (11) nie null auto_increment,
nazwa varchar (255) nie jest null,
varchar adresu e-mail (255) nie jest null,
temat varchar (255) nie jest null,
tekst wiadomości nie jest pusty,
data danych nie jest pusta,
klucz podstawowy (id)
);

Krok trzeci: Tworzenie formularzy

index.html:

Formularz zapisywania MySQL

Przykładowy formularz z zapisem danych w MySQL

























Wysyłanie prośby
Nazwa:
E-mail:
Temat wiadomości:
Wiadomość:
























Krok czwarty: Tworzenie obsługi formularzy " save_form.php"z zapisaniem otrzymanych danych w MySQL

save_form.php:





/ * Tabela MySQL, w której będą przechowywane dane * /
$ table = "test_table";

/ * Utwórz połączenie * /

/ * Ustal aktualną datę * /
$ cdate = data ("R-m-d");

/ * Utwórz zapytanie, aby wstawić informacje do tabeli
nazwa ... data - nazwa poszczególnych pól w bazie danych;
in $ _POST ["nazwa_testu"] ... $ _POST ["test_mess"] - te zmienne zawierają dane otrzymane z formularza */
$ query = "INSERT INTO $ table SET nazwa =" ". $ _ POST [" test_name "]." ", email =" ". $ _ POST [" test_mail "]." ",
theme = „”. $ _ POST [„test_theme”]. „”, message = „”. $ _ POST [”test_mess”]. „”, data = „$ cdate” „;

/ * Zamknij połączenie * /
mysql_close ();

/ * W przypadku pomyślnego zapisania wyświetl komunikat i link zwrotny * /
Echo ("


Dane zostały pomyślnie zapisane!



Wróć
");

Krok piąty: Wyprowadzanie zapisanych danych " view_data.php"

view_data.php:

/ * Połącz z bazą danych * /
$ nazwa hosta = "host lokalny"; // nazwa serwera / ścieżka, z MySQL
$ nazwa użytkownika = "root"; // nazwa użytkownika (domyślnie Denwer to "root")
$ hasło = ""; // hasło użytkownika (domyślnie w Denwer nie ma hasła, ten parametr można pozostawić pusty)
$dbName = "baza_testu"; // nazwa bazy danych


$ table = "test_table";

/ * Utwórz połączenie * /
mysql_connect ($ nazwa hosta, $ nazwa użytkownika, $ hasło) lub die ("Nie mogę utworzyć połączenia");

/ * Wybierz bazę danych. Jeśli wystąpi błąd, wydrukuj go * /
mysql_select_db ($ dbName) lub umrzeć (mysql_error ());

/* Tworzymy prośbę o wyodrębnienie danych z pól "nazwa", "e-mail", "temat",
"wiadomość", "dane" z "tabeli testowej" * /
$ query = "SELECT id, nazwa, e-mail, motyw, wiadomość, dane z tabeli $";

/ * Realizujemy żądanie. Jeśli wystąpi błąd, wyświetl go. * /


Echo ("

Wyprowadzanie danych z MySQL

Wyprowadzanie wcześniej zapisanych danych z tabeli MySQL










");



Echo "

\ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n\ n ";
}

Echo ("

# data złożenia wniosku Nazwy użytkowników Użytkownicy poczty e-mail Temat wiadomości Wiadomości użytkownika
". $ wiersz [" id "]."". $ wiersz [" dane "]."". $ wiersz [" nazwa "]."". $ wiersz [" e-mail "]."". $ wiersz [" motyw "]."". $ wiersz [" wiadomość "]."
\ n ");

/ * Zamknij połączenie * /
mysql_close ();

Krok szósty: Usuwanie rekordów z bazy danych” del_data.php"

del_data.php:

/ * Połącz z bazą danych * /
$ nazwa hosta = "host lokalny"; // nazwa serwera / ścieżka, z MySQL
$ nazwa użytkownika = "root"; // nazwa użytkownika (domyślnie Denwer to "root")
$ hasło = ""; // hasło użytkownika (domyślnie w Denwer nie ma hasła, ten parametr można pozostawić pusty)
$dbName = "baza_testu"; // nazwa bazy danych

/ * Tabela MySQL przechowująca dane * /
$ table = "test_table";

/ * Utwórz połączenie * /
mysql_connect ($ nazwa hosta, $ nazwa użytkownika, $ hasło) lub die ("Nie mogę utworzyć połączenia");

/ * Wybierz bazę danych. Jeśli wystąpi błąd, wydrukuj go * /
mysql_select_db ($ dbName) lub umrzeć (mysql_error ());

/ * Jeśli kliknięto link Usuń, usuń wpis * /
$ del = $ query = "usuń z tabeli $ gdzie (id = "$ del ")";
/ * Realizujemy żądanie. Jeśli wystąpi błąd, wyświetl go. * /
mysql_query (zapytanie $) lub die (mysql_error ());



/ * Realizujemy żądanie. Jeśli wystąpi błąd, wyświetl go. * /
$ res = mysql_query (zapytanie $) lub die (mysql_error ());

$ wiersz = mysql_num_rows ($ res);

/ * Wyświetl dane z tabeli * /
Echo ("

Zrzucanie i usuwanie danych z MySQL

Wyświetlanie i usuwanie wcześniej zapisanych danych z tabeli MySQL











");

/ * Pętla do wyprowadzania danych z bazy danych o określonych polach * /
while ($ wiersz = mysql_fetch_array ($ res)) (
Echo "

\ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
/ * Wygeneruj link do usunięcia pola * /
Echo " \ n ";
Echo "\ n ";
}

Echo ("

# data złożenia wniosku Nazwy użytkowników Użytkownicy poczty e-mail Temat wiadomości Wiadomości użytkownika Usuwanie
". $ wiersz [" id "]."". $ wiersz [" dane "]."". $ wiersz [" nazwa "]."". $ wiersz [" e-mail "]."". $ wiersz [" motyw "]."". $ wiersz [" wiadomość "]."Kasować
\ n ");

/ * Zamknij połączenie * /
mysql_close ();

Krok siódmy: Edycja i aktualizacja rekordów w bazie danych” update_data.php"

update_data.php:

/ * Połącz z bazą danych * /
$ nazwa hosta = "host lokalny"; // nazwa serwera / ścieżka, z MySQL
$ nazwa użytkownika = "root"; // nazwa użytkownika (domyślnie Denwer to "root")
$ hasło = ""; // hasło użytkownika (domyślnie w Denwer nie ma hasła, ten parametr można pozostawić pusty)
$dbName = "baza_testu"; // nazwa bazy danych

/ * Tabela MySQL przechowująca dane * /
$ table = "test_table";

/ * Utwórz połączenie * /
mysql_connect ($ nazwa hosta, $ nazwa użytkownika, $ hasło) lub die ("Nie mogę utworzyć połączenia");

/ * Wybierz bazę danych. Jeśli wystąpi błąd, wydrukuj go * /
mysql_select_db ($ dbName) lub umrzeć (mysql_error ());

/ * Jeśli wciśnięto przycisk edycji, wprowadź zmiany * /
if (@ $ submit_edit) (
$ query = "UPDATE $ table SET nazwa =" $ test_name ", e-mail =" $ test_mail ", motyw =" $ test_theme", wiadomość =" $ test_mess "WHERE id =" $ update "";
/ * Realizujemy żądanie. Jeśli wystąpi błąd, wyświetl go. * /
mysql_query (zapytanie $) lub die (mysql_error ());
}

/ * Dodaj całą bazę danych do zmiennej $ res * /
$ query = "SELECT * FROM $ table";
/ * Realizujemy żądanie. Jeśli wystąpi błąd, wyświetl go. * /
$ res = mysql_query (zapytanie $) lub die (mysql_error ());
/ * Sprawdź liczbę rekordów w bazie danych * /
$ wiersz = mysql_num_rows ($ res);

/ * Wyświetl dane z tabeli * /
Echo ("

Edycja i aktualizacja danych

Edycja i aktualizacja danych w tabeli MySQL


");

/ * Pętla do wyprowadzania danych z bazy danych o określonych polach * /
while ($ wiersz = mysql_fetch_array ($ res)) (
Echo "

\ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo " \ n ";
Echo "\ n ";
Echo " \ n ";
Echo "\ n ";
Echo " \ n ";
Echo "\ n ";
Echo " \ n ";
Echo "\ n ";
Echo " \ n ";
Echo "\ n ";
Echo " \ n ";
Echo "
# ". $ wiersz [" id "]."
". $ wiersz [" dane "]."
Nazwa użytkownika:
E-mail użytkownika:
Temat wiadomości:
Wiadomość:
\ n \ n ";
}

/ * Zamknij połączenie * /
mysql_close ();

No to wszystko, ładne kodowanie: 1133:

_________________________________

W tym artykule przyjrzymy się, jak używać PHP do wstawiania wierszy do bazy danych MySQL.

Krok 1 - tworzenie tabeli

Najpierw musisz stworzyć tabelę dla danych. Ten prosta procedura co można zrobić za pomocą phpMyAdmin w panelu sterowania hostingu.

Po zalogowaniu się w phpMyAdmin zobaczysz taki interfejs:
Utwórzmy tabelę o nazwie Studenci w bazie danych u266072517_name, klikając przycisk „Utwórz tabelę”. Potem zobaczymy Nowa strona, na którym ustawiamy wszystkie niezbędne parametry tabeli:

To jest najbardziej łatwe ustawienie które można wykorzystać do stołu i dostać Dodatkowe informacje o strukturze tabel/baz danych.

Opcje kolumn:

  • Nazwa to nazwa kolumny, która pojawia się u góry tabeli.
  • Typ - typ kolumny. Na przykład wybraliśmy varchar, ponieważ będziemy wprowadzać wartości ciągu.
  • Długość / Wartości - Służy do wskazania maksymalnej długości, jaką może mieć wpis w tej kolumnie.
  • Indeks - użyliśmy indeksu "Primary" dla pola "ID". Zaleca się, aby podczas tworzenia tabeli używać tylko jednej kolumny jako klucza podstawowego. Służy do wyświetlania rekordów w tabeli i jest wymagany podczas konfigurowania tabeli. Zaznaczyłem też "A_I", co oznacza "Auto Increment" - parametr do automatycznego przypisywania liczby rekordów (1,2,3,4...).
    Kliknij przycisk Zapisz, a tabela zostanie utworzona.

Krok 2. Pisanie kodu PHP do wstawiania danych do MySQL.

Opcja 1 - metoda MySQLi

Najpierw musisz nawiązać połączenie z bazą danych. Następnie używamy zapytania SQL INSERT. Pełny przykład kodu:

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

Pierwsza część kodu (linie 3 - 18) dotyczy połączenia z bazą danych.

Zacznijmy od linii 19:

$ sql = "WSTAW UCZNIÓW (imię, nazwisko, e-mail) WARTOŚCI (" Thom "," Fiolka "," [e-mail chroniony]")";

Wstawia dane do bazy danych MySQL. INSERT INTO to instrukcja, która dodaje dane do określonej tabeli. W naszym przykładzie dane są dodawane do tabeli Studenci.

Następnie następuje wyliczenie kolumn, do których wstawiane są wartości: imię, nazwisko, e-mail. Dane zostaną dodane w pokazanej kolejności. Gdybyśmy napisali (e-mail, nazwisko, imię), wartości zostałyby dodane w innej kolejności.

Następna część to operator WARTOŚCI. Tutaj podajemy wartości dla kolumn: imię = Thom, nazwisko = Fiolka, e-mail = [e-mail chroniony]

Uruchomiliśmy żądanie za pomocą kodu PHP. V kod programu Zapytania SQL muszą być cytowane. Kolejna część kodu (linie 20-22) sprawdza, czy nasza prośba się powiodła:

if (mysqli_query ($ conn, $ sql)) (echo "Nowy rekordutworzony pomyślnie";)

Ten kod wyświetla komunikat o pomyślnym zakończeniu żądania.

A ostatnia część (22 - 24 linie) wyświetla powiadomienie, jeśli żądanie nie powiodło się:

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

Opcja 2 - Metoda obiektu danych PHP (PDO)

Najpierw musimy połączyć się z bazą danych, tworząc nowy obiekt PDO. Pracując z nim będziemy korzystać z różnych metod PDO. Metody obiektowe nazywane są tak:

$ the_Object-> the_Method ();

PDO pozwala na „przygotowanie” SQL przed jego wykonaniem. Zapytanie SQL jest oceniane i "poprawiane" przed uruchomieniem. Na przykład najprostszy atak polegający na wstrzyknięciu kodu SQL można przeprowadzić, wstrzykując kod SQL do pola formularza. Na przykład:

Ponieważ jest to poprawny składniowo SQL, średnik powoduje, że DROP DATABASE user_table staje się nowym zapytaniem SQL, a tabela user jest usuwana. Przygotowane wyrażenia (zmienne powiązane) nie pozwalają na uzupełnienie oryginalnego zapytania średnikami i cudzysłowami, więc polecenie DROP DATABASE nigdy nie zostanie wykonane.

Aby użyć przygotowanych instrukcji, musisz napisać nową zmienną, która wywołuje metodę Prepare() obiektu bazy danych.

Prawidłowy kod:

pobierz wiadomość (); ) // Ustaw zmienne dla osoby, którą chcemy dodać do bazy danych $ first_Name = "Thom"; $ last_Name = "Fiolka"; $ e-mail = " [e-mail chroniony]"; // Utwórz zmienną, która wywołuje metodę Prepare() obiektu bazy danych // Zapytanie SQL, które chcesz wykonać, jest wprowadzane jako parametr, a symbole zastępcze są zapisywane w następujący sposób: placeholder_name $ my_Insert_Statement = $ my_Db_Connection-> Prepare ( " INSERT INTO Students ( imię, nazwisko, e-mail) WARTOŚCI (: imię,: nazwisko,: e-mail) "); // Teraz mówimy skryptowi, która zmienna odnosi się do każdego symbolu zastępczego, aby użyć metody bindParam() // Pierwszy parametr to symbol zastępczy w powyższym oświadczeniu, druga to zmienna, do której powinna 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 nie, dając ci możliwość wydrukowania własnej wiadomości, jeśli ($ my_Insert_Statement-> execute ()) (echo „Nowa reco Utworzono pomyślnie "; ) else (echo "Unable to createrecord";) // W tym momencie możesz zmienić dane zmiennej i uruchomić zapytanie, aby dodać inne dane do bazy danych do bazy danych $ first_Name = "John"; $ last_Name = "Kowalski"; $ e-mail = " [e-mail chroniony]"; $ my_Insert_Statement-> execute (); // Wykonaj ponownie po zmianie zmiennej if ($ my_Insert_Statement-> execute()) (echo" New recordcreatedsuccessfully ";) else (echo" Nie można utworzyćrecord ";

W wierszach 28, 29 i 30 używamy metody bindParam() obiektu bazy danych. Istnieje również metoda bindValue(), która bardzo różni się od poprzedniej.

  • bindParam() — ta metoda ocenia dane po osiągnięciu metody execute(). Gdy skrypt po raz pierwszy dotrze do metody execute(), widzi, że $ first_Name pasuje do „Thom”. Następnie wiąże tę wartość i uruchamia żądanie. Kiedy skrypt dotrze do drugiej metody execute(), widzi, że $ first_Name ma teraz wartość „John”. Następnie wiąże tę wartość i ponownie uruchamia żądanie z nowymi wartościami. Należy pamiętać, że raz zdefiniowaliśmy zapytanie i ponownie wykorzystaliśmy je z różnymi danymi w różnych punktach skryptu.
  • bindValue() — ta metoda ocenia dane, gdy tylko zostanie osiągnięta wartość bindValue(). Ponieważ $ first_Name zostało ustawione na "Thom", po osiągnięciu wartości bindValue() będzie ona używana za każdym razem, gdy execute() zostanie wywołana na $my_Insert_Statement.
    Zauważ, że ponownie używamy zmiennej $ first_Name i przypisujemy jej nową wartość po raz drugi. Po uruchomieniu skryptu obie nazwy zostaną wskazane w bazie danych, mimo że zmienna $ first_Name na końcu skryptu ma wartość „John”. Pamiętaj, że PHP sprawdza cały skrypt przed jego uruchomieniem.

Jeśli zaktualizujesz skrypt, aby zastąpić bindParam wartością bindValue, dwukrotnie wstawisz „Thom Vial” do bazy danych, a John Smith zostanie zignorowany.

Krok 3 - Potwierdzenie sukcesu i rozwiązanie problemu

Jeśli żądanie wstawienia wierszy do bazy danych powiodło się, zobaczymy następujący komunikat:

Eliminowanie typowych błędów

MySQLi

W przeciwnym razie zostanie wyświetlony komunikat o błędzie. Na przykład zróbmy jeden błąd składniowy w kodzie, a otrzymamy:

Pierwsza część kodu jest w porządku, połączenie zostało pomyślnie nawiązane, ale zapytanie SQL nie powiodło się.

"Błąd: WSTAW UCZNIÓW (imię, nazwisko, e-mail) WARTOŚCI (" Thom "," Fiolka "," [e-mail chroniony]") Wystąpił błąd w składni SQL; sprawdź w podręczniku, który odpowiada wersji serwera MySQL, jakiej składni należy użyć w pobliżu" (imię, nazwisko, e-mail) WARTOŚCI ("Thom", "Vial", " [e-mail chroniony]")" w wierszu 1 "

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

$ sql = "WSTAW UCZNIÓW (imię, nazwisko, e-mail) WARTOŚCI (" Thom "," Fiolka "," [e-mail chroniony]")";

Zastosowaliśmy aparaty ortodontyczne zamiast zwykłych. To jest niepoprawne i skrypt wygenerował błąd składni.

ChNP

W linii 7 połączenia PDO tryb błędu jest ustawiony na "wyświetl wszystkie wyjątki". Jeśli podana zostanie inna wartość i żądanie się nie powiedzie, nie otrzymamy żadnych komunikatów o błędach.

To ustawienie powinno być używane tylko podczas tworzenia skryptu. Po aktywacji mogą zostać wyświetlone nazwy bazy danych i tabel, które ze względów bezpieczeństwa lepiej ukryć. W przypadku opisanym powyżej, gdy zamiast zwykłych nawiasów klamrowych użyto nawiasów klamrowych, komunikat o błędzie wygląda tak:

Błąd krytyczny: Nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE: Błąd składni lub naruszenie dostępu: 1064 Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL, aby sprawdzić składnię praw do użycia w pobliżu "(imię, nazwisko, e-mail) WARTOŚCI (" Thom "," Fiolka "," [e-mail chroniony]")" w wierszu 1 "

Inne możliwe problemy:

  • Kolumny są nieprawidłowe (nieistniejące kolumny lub błąd w pisowni w ich nazwach).
  • Jeden typ wartości jest przypisany do kolumny innego typu. Na przykład, jeśli spróbujesz wstawić liczbę 47 do kolumny Nazwa, otrzymasz błąd. W tej kolumnie musisz użyć wartości ciągu. Ale gdybyśmy podali liczbę w cudzysłowie (na przykład „47”), zadziałałoby, ponieważ jest to ciąg znaków.
  • Podjęto próbę wprowadzenia danych do tabeli, która nie istnieje. Jak również błąd pisowni w nazwie tabeli.

Po pomyślnym wprowadzeniu danych zobaczymy, że zostały one dodane do bazy danych. Poniżej przykład tabeli, do której zostały dodane dane.

Wniosek

W tym artykule omówiliśmy, jak używać PHP do wstawiania danych do bazy danych MySQL za pomocą MySQLi i PDO. A także jak naprawić typowe błędy. Ta wiedza przyda się podczas nauki programowania i tworzenia własnej strony internetowej.

Niniejsza publikacja jest tłumaczeniem artykułu „ Jak używać PHP do wstawiania danych do bazy danych MySQL„Przygotowane przez przyjazny zespół projektowy