PHP PDO: how to insert multiple lines?

I have many sql statements, but I want to, but I am wondering if there is any method or function to shorten and do this in the smallest possible lines using PHP PDO.

One of my ideas is to create an array with the following names: Perfiles, Usuarios, Customer, Mps, Poliza and Servicios together are something like foreach, but I have no specific idea, could you help me?

SQL statements

$sqlpermsPer = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Perfiles',0,0,0,0)";
$resultpermsPer = $this->dbConnect->query($sqlpermsPer) or die ($sqlpermsPer);

sqlpermsC = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Clientes',0,0,0,0)";
$resultpermsC = $this->dbConnect->query($sqlpermsC) or die ($sqlpermsC);

$sqlpermsU = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Usuarios',0,0,0,0)";
$resultpermsU = $this->dbConnect->query($sqlpermsU) or die ($sqlpermsU);

$sqlpermsM = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Mps',0,0,0,0)";
$resultpermsM = $this->dbConnect->query($sqlpermsM) or die ($sqlpermsM);

$sqlpermsP = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Poliza',0,0,0,0)";
$resultpermsP = $this->dbConnect->query($sqlpermsP) or die ($sqlpermsP);

$sqlpermsS = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar)
                                            VALUES ($idPerfil,'Servicio',0,0,0,0)";
$resultpermsS = $this->dbConnect->query($sqlpermsS) or die ($sqlpermsS);

Thanks in advance!

+5
source share
4 answers

This creates an array containing your strings, and goes through them, each time executing the same query with bound parameters.

$stmt = $this->dbConnect->prepare("INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,:str,0,0,0,0)");
$stmt->bindParam(':idPerfil', $idPerfil);
$stmt->bindParam(':str',$val);
$in_arr = array("Perfiles","Clientes","Usuarios","Mps","Poliza","Servicio");

foreach ($in_arr as $key => $val) {
    $stmt->execute();
}  
+3
source

Please check this answer .

, :

$qry = 'INSERT INTO table (FirstName, LastName) VALUES ';
$qry .= "(?,?), "
      . "(?,?), "
      . "(?,?)  "
      ;
0
INSERT INTO
  table 
    (column_one, column_two) 
  VALUES
    ('value_one_one', 'value_one_two'), 
    ('value_two_one', 'value_two_two'), 
    ('value_three_one', 'value_three_two'); 
0
source

As long as you complete each INSERT, you can connect them. The following code example is also used prepareto prevent SQL injection.

$sql  = "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Perfiles',0,0,0,0);";
ssql .= "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Clientes',0,0,0,0);";
$sql .= "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Usuarios',0,0,0,0);";
$sql .= "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Mps',0,0,0,0);";
$sql .= "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Poliza',0,0,0,0);";
$sql .= "INSERT INTO t_perfiles_permisos (Id_Perfil, Area_Permiso, Buscar, Crear, Eliminar, Modificar) VALUES (:idPerfil,'Servicio',0,0,0,0);";

try
{
  if ( $stmt = $db->prepare( $sql ) )
  {
    if ( ! $stmt->execute( array( ':idPerfil' => $idPerfil ) )
      error_log( $stmt->errorInfo() );
  }
}
catch ( PDOException $e )
{
  error_log( $e->getMessage() );
}
0
source

All Articles