Insira vários dados no MySQL usando MySQLi e PDO
A função mysqli_multi_query() pode ser usada para executar múltiplas instruções SQL.
O exemplo a seguir adiciona três novos registros à tabela "MyGuests":
Exemplo (MySQLi - Orientado a Objetos)
<?php $ servername = " localhost " ; $ username = " nomedeusuário " ; $password = " password " ; $dbname = " myDB " ; $conn = novo mysqli ( $servername , $ username , $password , $dbname ) // Verifique o link se ( $conn -> connect_error ) { die ( " Falha na conexão: " . $conn -> connect_error ) } ; $sql = " INSERT INTO MyGuests (nome, sobrenome, email)VALUES ('John', 'Doe', '[email protected]'); " ; $sql .= " INSERT INTO MyGuests (nome, sobrenome, email) VALORES
( ' Mary'
, 'Moe', '[email protected] ' ) ; INTO MyGuests (nome, sobrenome, e-mail)VALUES ('Julie', 'Dooley', '[email protected]') " ; if ( $conn -> multi_query ( $sql ) === VERDADEIRO ) { eco " Novo registro inserido com sucesso " } outro { eco " Erro : " . $ sql . $conn -> fechar ( ) ? > | Observe que cada instrução SQL deve ser separada por ponto e vírgula. |
|---|
Exemplo (MySQLi - Orientado a Procedimentos)
<?php $ servername = " localhost " ; $ username = " nomedeusuário " ; $password = " password " ; $dbname = " myDB " ; $conn = mysqli_connect ( $servername , $username , $password , $dbname ) ; // Verifique o link; se ( ! $con ) { die ( " Falha
na conexão: " .mysqli_connect_error ( ) ) } ; $sql = " INSERT INTO MyGuests (nome, sobrenome, email)VALUES ('John', 'Doe', '[email protected]'); " ; $sql .= " INSERT INTO MyGuests (nome, sobrenome, email) VALORES
( ' Mary'
, 'Moe', '[email protected] ' ) ; INTO MyGuests (nome, sobrenome, e-mail)VALUES ('Julie', 'Dooley', '[email protected]') " ; if ( mysqli_multi_query ( $conn , $sql ) ) { eco " Novo registro inserido com sucesso " } outro { eco " Erro : " . $ sql . mysqli_close ( $ conn ) ; Exemplo (DOP)
<?php $ nome_do_servidor = " localhost " ; $ nome_do_usuário = " nome_do_usuário " ; $ senha = " senha " ; { $conn = novo PDO ( " mysql:host= $servername ;dbname= $dbname " , $username , $password ) // define o modo de erro do PDO para exceção ; $conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) // Inicia transação ; $conn -> startTransaction ( ) ; // instrução SQL $ conn -> exec ( " INSERT INTO MyGuests (
nome , sobrenome, email) VALUES ('
John ', '
Doe ', '[email protected]') " ) ; , sobrenome, email) VALUES ('Mary', 'Moe', '[email protected]') " ) ; $conn -> exec ( " INSERT INTO MyGuests (nome, sobrenome, email) VALUES ('
Julie ', 'Dooley', '[email protected]') " ) ; $conn - > commit ( ) ; " Novo registro inserido com sucesso " } catch ( PDOException $e ) { // Se a execução falhar, rollback $conn - > reversão ( ) ; $ sql . " <br> " . $conn = null ? > Use declarações preparadas
A extensão mysqli fornece uma segunda maneira de inserir instruções.
Podemos preparar instruções e vincular parâmetros.
A extensão mysql pode enviar instruções ou consultas ao banco de dados mysql sem dados. Você pode associar ou "ligar" variáveis nematicamente.
Exemplo (MySQLi usa instruções preparadas)
<?php $servername = " localhost " ; $username = " nomedeusuário " ; $ password = " password " ; $ dbname = " myDB " ; $conn = novo mysqli ( $servername , $username , $ password , $dbname ) // Detecta conexão se ( $conn -> connect_error ) { die ( " Falha na conexão: " . $conn -> connect_error ) } ; outro { $sql = " INSERT INTO MyGuests(nome
, sobrenome, email) VALUES(?, ?, ?) " // Inicializa o objeto de instrução para mysqli_stmt_prepare() $stmt = mysqli_stmt_init ( $conn ) ; // Instrução de pré-processamento se ( mysqli_stmt_prepare ( $stmt , $sql ) ) { // Vincula parâmetros mysqli_stmt_bind_param ( $stmt , ' sss ' , $firstname , $lastname , $email ) // Define parâmetros e executa ; $ nome = ' João ' ; $ nome = ' Maria ' ; $ email = ' moe ' ; @exemplo.com ' ; mysqli_stmt_execute ( $stmt ) ; $primeironome = ' Julie ' ; $sobrenome = ' Dooley ' ; $ email = ' [email protected] ' ;} ?> Podemos ver que a modularidade é usada para resolver problemas nos exemplos acima. Podemos facilitar a leitura e o gerenciamento criando blocos de código.
Preste atenção à ligação dos parâmetros. Vejamos o código em mysqli_stmt_bind_param():
mysqli_stmt_bind_param($stmt, 'sss', $nome, $sobrenome, $email);
Esta função vincula a consulta de parâmetro e passa os parâmetros para o banco de dados. O segundo parâmetro é "sss". A lista a seguir mostra os tipos de parâmetros. O caractere s informa ao MySQL que o parâmetro é uma string.
Podem ser os quatro parâmetros a seguir:
eu - inteiro
d - número de ponto flutuante de precisão dupla
s - corda
b - valor booleano
Cada parâmetro deve especificar um tipo para garantir a segurança dos dados. O julgamento de tipo pode reduzir o risco de vulnerabilidades de injeção de SQL.