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

3votos

Cómo hacer UPDATE dependiendo de la dimensión del arreglo

Hola, estoy intentando hacer un UPDATE con una variable que viene separada por comas para la cual cada valor que traiga lo quisiera actualizar dependiendo de un id

mi código esta así

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

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

        $update="update [MOPS].[dbo].[create_colors] set [color]='".$valor[$i]."' WHERE [id]='".$id."'";
        $rs=odbc_exec($connection,$update);
    }

lo que hace es me guarda el primer color
por ejemplo me llega este valor

rojo,azul,morado

lo separo por explode y este for lo tiene que repetir tres veces con sus 3 valores, y lo que hace es que si lo pone 3 veces pero con el valor rojo, por favor si me pueden ayudar se los agradecería mucho
Saludos

0voto

Leonardo-Tadei comentado

De dónde toma valor $id ???

Es muy posible que el error esté relacionado con eso.

Adicionalmente, siempre es mejor recorrer un vector con foreach que con for.

0voto

rach comentado

lo traigo del valor de la bd ya que ese valor es único, pero si creo que tienes razón y de ahi surge mi problema ya que esta cambiando todos con el último valor al que llega el for

1voto

Leonardo-Tadei comentado

Si pudieras poner una porción de código másgrande, seguro podríamos ayudarte mejor.

Hay un detalle que supongo que es un error de tipeo, pero te lo comneto por las dudas: en el explode() creás el vector $valor, pero en el bucle tomás (de una forma algo particular) el tamaño de $valorA que es una variable diferente...

2 Respuestas

0voto

farcap Puntos220

hola, si puedieras poner más codigo para analizarmo mejor, solo podria decirte que modifiques la variable del for a $valor

1voto

GusGarsaky Puntos5480

En el for veo que iteras $valorA pero el array que contiene los colores es $valor. ¿Qué contiene $valorA?

Más allá de ello no veo fallo, claro que no soy muy asiduo usuario de PHP y me puedo equivocar fácilmente.

Hazo con prepared statement para mayor seguridad, nunca concatenes los datos a una consulta porque te puede hacer una bonita SQLi. De esta manera puedes primero validar los datos enviados antes de hacer una consulta.

for($i = 0; i < sizeof($valor); $i++) {
    $stmt -> $conn->prepare("UPDATE MOPS.dbo.create_colors SET color = ? WHERE id = ?;
    $stmt -> bind_param("sd", $valor[$i], $id);
    $stmt -> execute();
}

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