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)

<? Php
$ 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 ();
?>

uwaga Należy pamiętać, że każda instrukcja SQL muszą być oddzielone średnikiem.

Przykłady (MySQLi - zorientowane na proces)

<? Php
$ 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)

<? Php
$ 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ń)

<? 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.);
} 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.