PHP MySQL wstawić wiele danych
Użyj MySQLi i PDO MySQL wstawić wiele danych
Funkcja mysqli_multi_query () służy do wykonywania wielu instrukcji SQL.
Poniższe przykłady mają "MyGuests" tabeli dodaje trzy nowe rekordy:
Przykłady (MySQLi - Object Oriented)
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "MojaBD";
// Utwórz link
$ Conn = new mysqli ($ nazwa_serwera, $ username, $ password, $ dbname);
// sprawdza linki
if ($ conn-> connect_error) {
die ( "Połączenie nie powiodło się:" $ conn-> connect_error.);
}
$ Sql = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Jan", "Kowalski", "john@example.com ');";
$ SQL. = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Mary", "Moe", "mary@example.com ');";
$ SQL. = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Julie", "Dooley", "julie@example.com ')";
if ($ conn-> multi_query ($ sql) === TRUE) {
echo "Nowa płyta jest włożona pomyślnie";
} Else {
. Echo "Błąd:" $ sql "Największa" $ conn-> Błąd; pl
}
$ Conn-> close ();
?>
Należy pamiętać, że każda instrukcja SQL muszą być oddzielone średnikiem. |
Przykłady (MySQLi - zorientowane na proces)
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "MojaBD";
// Utwórz link
$ Conn = mysqli_connect ($ nazwa_serwera, $ username, $ password, $ dbname);
// sprawdza linki
if (! $ conn) {
die ( "Połączenie nie powiodło się:" mysqli_connect_error ().);
}
$ Sql = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Jan", "Kowalski", "john@example.com ');";
$ SQL. = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Mary", "Moe", "mary@example.com ');";
$ SQL. = "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Julie", "Dooley", "julie@example.com ')";
if (mysqli_multi_query ($ conn, $ sql)) {
echo "Nowa płyta jest włożona pomyślnie";
} Else {
. Echo "Błąd:" $ sql "Największa" mysqli_error ($ conn); pl
}
mysqli_close ($ conn);
?>
Przykłady (PDO)
$ Servername = "localhost";
$ Username = "username";
$ Password = "password";
$ Dbname = "myDBPDO";
try {
$ Conn = new PDO ( "mysql: host = $ nazwa_serwera; nazwa_bd = $ nazwa_bd" $ username, $ password);
// Ustaw tryb błędu PDO wyjątkiem
$ Conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
// Zacznij transakcję
$ Conn-> beginTransaction ();
// Instrukcja SQL
$ Conn-> exec ( "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Jan", "Kowalski", "john@example.com ')");
$ Conn-> exec ( "INSERT INTO MyGuests (imię, nazwisko, e-mail)
VALUES ( "Mary", "Moe", "mary@example.com ')");
$ Conn-> exec ( "INSERT INTO MyGuests (imię, nazwisko, e-mail)
WARTOŚCI ( "Julie" Dooley "," julie@example.com ")");
// Commit transakcję
$ Conn-> commit ();
echo "Nowa płyta jest włożona pomyślnie";
}
catch (PDOException $ e)
{
// Jeśli nie wycofywania
$ Conn-> rollback ();
pl Echo $ sql "Największa" $ e-> getMessage ();
}
$ Conn = null;
?>
Użyj przygotowanych sprawozdań
mysqli rozszerzenie zapewnia drugi sposób wstawić oświadczenia.
Przygotowaliśmy oświadczenia i związane parametry.
Rozszerzenie mysql może przesyłać dane bez rachunku lub zapytania do bazy danych mysql. Można skojarzyć lub "bind" zmienne do kolumn.
Przykłady (MySQLi wykorzystaniem przygotowanych sprawozdań)
$ 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.);
} Else {
$ Sql = "INSERT INTO MyGuests wartości (,, ???)";
// Aby mysqli_stmt_prepare () oświadczenie inicjalizacji obiektów
$ Stmt = mysqli_stmt_init ($ conn);
// Przygotowane oświadczenie
if (mysqli_stmt_prepare ($ stmt, $ sql)) {
// parametry Bind
mysqli_stmt_bind_param ($ stmt 'sss', $ imię, Nazwisko $, $ e-mail);
// Ustawiamy parametry i wykonać
$ Imię = 'Jan';
$ Nazwisko = 'Kowalski';
$ Email = 'john@example.com';
mysqli_stmt_execute ($ stmt);
$ Imię = "Mary";
$ Nazwisko = 'Moe';
$ Email = 'mary@example.com';
mysqli_stmt_execute ($ stmt);
$ FIRSTNAME = 'Julie';
$ Nazwisko = 'Dooley';
$ Email = 'julie@example.com';
mysqli_stmt_execute ($ stmt);
}
}
?>
Widzimy w powyższym przykładzie za pomocą modułowych radzić sobie z tym problemem. Możemy stworzyć blok kodu dla łatwiejszego czytania i zarządzania.
Uwaga związane parametry. Spójrzmy na mysqli_stmt_bind_param () kod:
mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
Wiązanie argumenty do kwerendy i przekazywanie parametrów do bazy danych. Drugim parametrem jest "sss". Poniższa lista przedstawia typ parametru. s znaków mówi argumentem mysql jest ciągiem.
Może to być następujące cztery parametry:
- I - całkowita
- d - podwójnej precyzji liczbę zmiennoprzecinkową
- s - łańcuch
- b - wartość logiczna
Każdy typ parametru musi być określona w celu zapewnienia bezpieczeństwa danych. Według rodzaju wyroku może zmniejszyć ryzyko podatności SQL injection.