Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como realizar o escape após as modificações?

A função insere produto não está funcionando mais com o escape após as modificações propostas pela atividade 09 da Aula 04 (encapsulamento).

Está retornando o seguinte erro: Fatal error: Can't use method return value in write context in /Applications/XAMPP/xamppfiles/htdocs/aluraphp/banco-produtos.php on line 27

Obs: A linha 27 é a linha que começa com: $produto->setNome()...

meu código está assim:

function insereProduto($conexao, Produto $produto){
        $produto->setNome() = mysqli_real_escape_string($conexao, $produto->getNome());
        $produto->setDescricao() = mysqli_real_escape_string($conexao, $produto->getDescricao());
        $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$produto->getNome()}', {$produto->getPreco()}, '{$produto->getDescricao()}', {$produto->getCategoria()->getId()}, {$produto->isUsado()})";
        var_dump($query);
        $resultadoDaInsercao = mysqli_query($conexao, $query);
        return $resultadoDaInsercao;
}

Se eu retirar o escape funciona normalmente. Estou utilizando o escape de forma errada?

Percebi que no link disponibilizado pela equipe com as modificações já feitas não está sendo utilizado o escape. A utilização do encapsulamento dispensa a utilização do escape?

2 respostas
solução!

Opa Thiago, tudo bem?

Eu não sou especialista em php, mas essa linha aqui me chamou atenção:

$produto->setNome() = mysqli_real_escape_string($conexao, $produto->getNome());

Não seria:

$produto->setNome(mysqli_real_escape_string($conexao, $produto->getNome()));

?

De fato, Alberto!

Esse era o problema.

Muito obrigado pela ajuda!