-1

我修改了我的代码,但我找不到错误,这看起来很简单,但我看代码看不到任何东西。谁能帮我?非常感谢您。

这和更新记录的代码

// update modelo
public function alteraModelo($modelo){

    try{    
        // monta consulta SQL para atualização do registro
        $sql = "UPDATE modelos SET 

                    nome =          :nome,
                    fone =          :fone,
                    email =         :email,
                    face =          :face,
                    altura =        :altura,
                    peso =          :peso,
                    idade =         :idade,
                    categoria =     :categoria,
                    data_fotos =            :data_fotos";

                    if($_FILES['foto1']['size'] > 0){
                        $sql .= "foto1 = :foto1,";
                    }
                    if($_FILES['foto2']['size'] > 0){
                        $sql .= "foto2 = :foto2,";
                    }
                    if($_FILES['foto3']['size'] > 0){
                        $sql .= "foto3 = :foto3,";
                    }
                    if($_FILES['foto4']['size'] > 0){
                        $sql .= "foto4 = :foto4,";
                    }
                    if($_FILES['foto5']['size'] > 0){
                        $sql .= "foto5 = :foto5,";
                    }
                    if($_FILES['foto6']['size'] > 0){
                        $sql .= "foto6 = :foto6,";
                    }
                    $sql .="link_video =    :link_video
                        WHERE id =  :id";

        // prepara consulta para o PDO
        $stmt = $this->prepare($sql);

        $data = Util::dataToSql($modelo['data_fotos']);

        // seta os parametros
        $stmt->bindParam(":data_fotos", $data);
        $stmt->bindParam(":nome", $modelo['nome']);
        $stmt->bindParam(":fone", $modelo['fone']);
        $stmt->bindParam(":email", $modelo['email']);
        $stmt->bindParam(":face", $modelo['face']);
        $stmt->bindParam(":altura", $modelo['altura']);
        $stmt->bindParam(":peso", $modelo['peso']);
        $stmt->bindParam(":idade", $modelo['idade']);
        $stmt->bindParam(":link_video", $modelo['link_video']);
        $stmt->bindParam(":categoria", $modelo['categoria']);

        if($_FILES['foto1']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto1']);

            $arquivo1 = "upload/" . date('YmdHis') . "_" . $_FILES['foto1']['name'];
            move_uploaded_file($_FILES['foto1']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo1);

            $stmt->bindParam(":foto1", $arquivo1);
        }

        if($_FILES['foto2']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto2']);

            $arquivo2 = "upload/" . date('YmdHis') . "_" . $_FILES['foto2']['name'];
            move_uploaded_file($_FILES['foto2']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo2);

            $stmt->bindParam(":foto2", $arquivo2);
        }

        if($_FILES['foto3']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto3']);

            $arquivo3 = "upload/" . date('YmdHis') . "_" . $_FILES['foto3']['name'];
            move_uploaded_file($_FILES['foto3']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo3);

            $stmt->bindParam(":foto3", $arquivo3);
        }

        if($_FILES['foto4']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto4']);

            $arquivo4 = "upload/" . date('YmdHis') . "_" . $_FILES['foto4']['name'];
            move_uploaded_file($_FILES['foto4']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo4);

            $stmt->bindParam(":foto4", $arquivo4);
        }

        if($_FILES['foto5']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto5']);

            $arquivo5 = "upload/" . date('YmdHis') . "_" . $_FILES['foto5']['name'];
            move_uploaded_file($_FILES['foto5']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo5);

            $stmt->bindParam(":foto5", $arquivo5);
        }

        if($_FILES['foto6']['size'] > 0){
            //Se a foto for atualizada
            $registro_antigo = $this->getModeloById($modelo['id']);
            //Remove o arquivo
            @unlink($registro_antigo['foto6']);

            $arquivo6 = "upload/" . date('YmdHis') . "_" . $_FILES['foto6']['name'];
            move_uploaded_file($_FILES['foto6']['tmp_name'], APPLICATION_PATH . DIRECTORY_SEPARATOR . ".." . DIRECTORY_SEPARATOR . $arquivo6);

            $stmt->bindParam(":foto6", $arquivo6);
        }

        $stmt->bindParam(":id", $modelo['id']);
        // atualiza registro
        $stmt->execute();

    } catch (Exception $e){
            echo $e->getMessage();

        }
}
4

1 回答 1

0

我看代码看不到任何东西。

这是正确的。没有人这样做。旨在运行的代码,而不是被欣赏的代码。

看,你正在编写一个程序来构建一个 SQL 查询。但是程序的结果是什么?你知道吗?不。
为什么不告诉您的代码将查询回显并查看,如果一切正常?

为什么不回显所有绑定变量,并将它们与查询中的参数进行比较?

此外,您将照片存储在数据库中的想法是错误的。
表中不应该没有枚举字段。如果你有一个 - 你做错了什么。必须使用另一个表来存储所有重复的相似数据。

于 2013-07-25T05:37:49.730 回答