Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos, estou com uma dúvida ou probleminha e buguei aqui, se alguém puder ajudar, é o seguinte tem como eu fazer um update sem setar valor ou de alguma forma não alterar o valor do campo se o campo tiver valor no banco? Exemplo Aqui eu recebo os dados pra cadastrar tudo certo public function update($dados) { $this->db->query("UPDATE posts SET capa =:capa, titulo =:titulo, texto =:texto WHERE id =:id"). $this->db->bind(":id", $dados['id']). $this->db->bind(":capa", $dados['capa']). $this->db->bind(":titulo", $dados['titulo']). $this->db->bind(":texto", $dados['texto']). } Porém, o campo capa, ou seja o dado caba não é obrigatório então se ele vier com valor null, ou em branco etc deveria não alterar o valor no banco pois o mesmo ja esta preenchido, como fazer para que ele altera o valor no banco somente se for null Eu já tentei usar unset($dados['capa']). para remover a capa, mais ele deixa o campo do DB null mesmo quando tem valor lá, e também definir $dados['capa'] = null, em fim não da certo...Olá ShadowDLL, obg por responder.
Dessa forma ai, o update só é feito quando não tiver valor vindo do formulario, ou seja quando não tiver a capa, mais e quando ela existir?
A imagem de capa é opcional no formulário então ela pode ou não vir, ou seja o $dados['capa'] pode ou não existe, se existir faz o update normal e atualiza o campo
Se a capa não existir, faz o update mais sem atualizar o campo capa, só os outros camposDesculpe-me pelo inconveniente, tente agora:
CÓDIGO:
public function update($dados) {
if (trim($dados['capa']) === "") {
$dados['capa'] = null;
}
$update = $conn->prepare("UPDATE posts SET capa = IF(capa IS NULL, :capa, capa), titulo = :titulo, texto = :texto WHERE id = :id");
$update->bindValue(":id", $dados['id']);
$update->bindValue(":capa", $dados['capa']);
$update->bindValue(":titulo", $dados['titulo']);
$update->bindValue(":texto", $dados['texto']);
$update->execute();
}
Segue solução, abaixo:
CÓDIGO: