entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Guardar por cada dato que recibo como string separado por comas en sql server

hola a todos, estoy recibiendo una variable que contiene una cadena de caracteres separados por coma, pero necesito que me guarde un registro pro cada elemento de la cadena, entonces lo estoy metiendo en una array, pero no consigo que se guarde como yo necesito
dejo mi codigo php

$ip= filter_input(INPUT_POST, "IP");
            $signum= filter_input(INPUT_POST, "SIGNUM");
            $idmop= filter_input(INPUT_POST, "IDMOP");
            $links = array( filter_input(INPUT_POST, "LINKS"));
            $miarray = split(',', $links);

    for($i=0;$i<sizeof($miarray);$i++){

            $sql="SELECT * FROM MOPS.dbo.create_mop_links WHERE idmop='".$idmop."'";
            $rs=odbc_exec($connection,$sql);
            $num= odbc_num_rows($rs);
            if($num<=0)
            {
            $sqlSD = "INSERT INTO [MOPS].[dbo].[create_mop_links] (ip,signum,idmop,links) VALUES ('".$ip."','".$signum."','".$idmop."','".$miarray[$i]."')";
            $rs_tar_addSD=odbc_exec($connection,$sqlSD);
            }
    }

en la base de datos me lo guarda en un solo registro y en el campo de "links" me escribe array
ayuda por favor

1 Respuesta

2votos

Leonardo-Tadei Puntos227320

Hola @rach,

el problema que tenés es que estás queriendo guardar el array en la tabla en vez de cada elemento.

Para guardar los elementos por separado sería:

foreach($miarray as $l){
             $sql="SELECT * FROM MOPS.dbo.create_mop_links WHERE idmop='".$idmop."'";
            $rs=odbc_exec($connection,$sql);
            $num= odbc_num_rows($rs);
            if($num<=0)  {
               $sqlSD = "INSERT INTO [MOPS].[dbo].[create_mop_links] (ip,signum,idmop,links) VALUES ('".$ip."','".$signum."','".$idmop."','".$l"')";
               $rs_tar_addSD=odbc_exec($connection,$sqlSD);
            }
}

Por si acaso, hacé previamenet un var_dump($miarray); para ver si efectivamenet luego del filtrado y el split tenés un array en que cada elemento es un string.

Saludos cordiales

0voto

rach comentado

hola gracias por responder a mi pregunta, lo eh probado y no me trae resultados :(

0voto

Leonardo-Tadei comentado

La salida del var_dump() no te trae resultados???

0voto

rach comentado

no, lo pusé tal como me dices y no me inserta ningun dato en la base

0voto

Leonardo-Tadei comentado

Por favor, poné la salida del var_dump() que te indico después de la asignación a $miarray para ver su contenido.

Como te decía al principio, es probable que tengas el problema en la recolección de datos.

Quedo a la espera de la salida del var_dump($miarray);

0voto

rach comentado

ya me lo inserta pero como al principio como Array :(

0voto

Leonardo-Tadei comentado

Sin que copies y pegues acá par qeu pueda ver la salida del var_dump($miarray) no puedo seguir ayudándote. Lo siento. Si nos envías esa salida, podemos intenta rver qué pasa.

0voto

rach comentado

despues de muchos intentos encontré que estaba haciendo mal, debí usar explode en vez de implode
dejo mi codigo

            $ip= filter_input(INPUT_POST, "IP");
        $signum= filter_input(INPUT_POST, "SIGNUM");
        $idmop= filter_input(INPUT_POST, "IDMOP");
        $links =  filter_input(INPUT_POST, "LINKS");

        $valor = explode(',',$links); 

for($i=0;$i<4;$i++){

        $sqlSD = "INSERT INTO [MOPS].[dbo].[create_mop_links] (ip,signum,idmop,links) VALUES ('".$ip."','".$signum."','".$idmop."','".$valor[$i]."')";
        $rs_tar_addSD=odbc_exec($connection,$sqlSD);

}

me guarda 4 registros, que era lo que buscaba, muchas gracias por contestarme
Saludos!!

0voto

Leonardo-Tadei comentado

Gracias por comartir la respuesta.
Te pedía justamente la salida del contenido de $miarray porque parecía que ahí estaba el problema.
Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta