Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Necesito incorporar unos valores con condiciones individuales dentro de un INSERT INTO

7 de noviembre de 2016

Hola, tengo un problema que me urge y lo he puesto de 5000 maneras y no hay forma de que quede como quiero.

Quiero realizar un INSERT a la base de datos pero hay varios valores que quiero que tengan condiciones propias para su inserción. Por lo tanto me gustaría ver si hay alguna forma de incorporar éste código:

Código 1

$result = ($telefono != '');
if ($result == true){
    mysql_query("INSERT INTO Nombre_Tabla (Whatsapp) VALUES ('Si')",$conect);
} else {
    die("<br>error:".mysql_error());
}
 
$result = ($user != '' and $pw != '' and $nick != '');
if ($result == true){
    mysql_query("INSERT INTO Nombre_Tabla (OPMYA) VALUES ('Si')",$conect);
}else{
    die("<br>error:".mysql_error());
}
 
$result = ($user != '' and $pw != '' and $nick != '');
if ($result == true){
    mysql_query("INSERT INTO Nombre_Tabla (Estado) VALUES ('1')",$conect);
}else{
    die("<br>error:".mysql_error());
}
 
$result = ($fechanac != '' and $nombre != '' and $nick != '' and $procnakama != '' and $codigopais != '' and $telefono != '' and $email != '' and $user != '' and $pw != '');
if ($result == true) {
    mysql_query("INSERT INTO Nombre_Tabla (Participantes) VALUES ('Si')",$conect);
} else {
    die("<br>error:".mysql_error());
}

Dentro de un único INSERT que ya tiene valores a incorporar y funciona perfectamente si lo mando así:

Código 2

$result = mysql_query("INSERT INTO Nombre_Tabla(Fecha_Reg,Fecha_Nac,Nombre_Completo,Nick_Alias,Procedencia,Cod_Pais,Telefono,G1,G2,G3,G4,G5,G6,G7,Email,IDusuario,Clave,Nuevo_Nakama,Notas_Nakama,Privilegios,Rango,IP_Publica)
VALUES ('$fecha4','$fecha2','$nombre','$nick','$procnakama','$codigopais','$telefono','$grupo1','$grupo2','$grupo3','$grupo4','$grupo5','$grupo6','$grupo7','$email','$user','$pw','No','Bienvenido','No','Nakama','$ip');", $conect);

Pues eso mismo, incorporar los valores con sus condiciones del "Codigo 1" en el "Código 2" para que se apliquen todos al mismo INSERT y no me cree 5 INSERT distintos.

Gracias, espero que puedan ayudarme.


Respuestas

#1

Lo que puedes hacer es ir guardando los valores que vas a insertar y luego construir la consulta SQL con todos esos valores. Algo así:

<?php
$columns = array();
$values = array();
 
if ($telefono !== '') {
    $columns[] = 'Whatsapp';
    $values[] = 'Si';
}
 
if ($user !== '' and $pw !== '' and $nick !== '') {
    $columns[] = 'OPMYA';
    $values[] = 'Si';
}
 
// ...
 
$columnsSql = implode(", ", $columns);
$valuesSql = "'".implode(", '", $values)."'";
$sql = sprintf("INSERT INTO Nombre_Tabla(%s) VALUES (%s);", );
$result = mysql_query($sql, $conect);

@javiereguiluz

7 noviembre 2016, 9:01