Error UPDATE with PDO

0

I'm trying to update the data, but when I update it, I change the user_id, but I want to continue saving it.

Function,

public function actualizaPagador($id_pago,$id_usuario,$pago){
        $db=BaseDatos::conectar();

        try{
            $sentencia = $db->prepare("UPDATE Pagos SET id_pagos=:id_pagos,id_usuario=:id_usuario,iban=:iban,estado=:estado,tipo=:tipo,observaciones=:observaciones,fecha=:fecha,nombre=:nombre,apellido=:apellido,banco=:banco WHERE id_pagos = :id_pagos");
            $sentencia->execute([':id_pagos'=>$id_pago,':id_usuario'=>$id_usuario,':iban'=>$pago->getIban(),':estado'=>$pago->getEstado(),':tipo'=>$pago->getTipo(),':observaciones'=>$pago->getObservaciones(),':fecha'=>$pago->getFecha(),':nombre'=>$pago->getNombre(),':apellido'=>$pago->getApellido(),':banco'=>$pago->getBanco()]);
        } catch(PDOException $e){
            echo "Error -> ".$e->getMessage().'<br>';
            echo "Error -> ".$e->getLine().'<br>';
        }
    }

Controller,

    elseif(filter_has_var(INPUT_POST, 'editPagador')){
    echo "HOLA va al controlador suuuu";

    $contador=count($_POST['nombrePagador']);
    for ($i=0; $i < $contador ; $i++) {
        $pagador=['id_pagos' => $_POST['id_pagos'][$i],'id_usuario' => $_POST['id_usuario'][$i],'banco'=>$_POST['banco'][$i],'nombre' => $_POST['nombrePagador'][$i],'apellido' => $_POST['apellidoPagador'][$i],'iban' => $_POST['iban'][$i],'fecha' => $_POST['fecha'][$i],'tipo' => $_POST['tipo'][$i],'estado' => $_POST['estado'][$i]];
        echo "<br><br>";
        //print_r($pagador);
        $pago->setIdPago($pagador['id_pagos']);
        $pago->setIdUsuario($pagador['id_usuario']);
        $pago->setNombre($pagador['nombre']);
        $pago->setApellido($pagador['apellido']);
        $pago->setFecha($pagador['fecha']);
        $pago->setTipo($pagador['tipo']);
        $pago->setEstado($pagador['estado']);
        $pago->setIban($pagador['iban']);
        $pago->setBanco($pagador['banco']);
        echo "<h1>".$pagador['id_usuario']."hello</h1>";
        //$pago->setIban($_POST['iban'][$i]);

        // foreach ($pagador as $key => $value) {

        // }
        echo $pagador['id_pagos'].'<br>';

        $lista = $crud->actualizaPagador($pagador['id_pagos'],$pagador['id_usuario'],$pago);

        var_dump($lista);
    }

}
    
asked by sergibarca 01.06.2018 в 09:57
source

1 answer

0

Just put the values you want to change in your UPDATE statement, since the userid is not variable, you do not need to send it within the SET, so you could try:

 $sentencia = $db->prepare("UPDATE Pagos SET iban=:iban,estado=:estado,tipo=:tipo,observaciones=:observaciones,fecha=:fecha,nombre=:nombre,apellido=:apellido,banco=:banco WHERE id_pagos = :id_pagos");

NOTE : I have also deleted "payment_id =: payment_id" since I assume that this is the primary key of the table and it should not be several.

    
answered by 01.06.2018 в 10:23