Fatal error: Call to a Member Function getId() on string

Asked

Viewed 2,373 times

1

I cannot find the error that is appearing in my product bank. Could someone help me find it? I thank you beforehand.

 Fatal error: Call to a member function getId() on string in         C:\Bitnami\wampstack-5.6.19-0\apache2\htdocs\beladuquesa\sys\banco-produto.php on line 85

this is the function alterProduct:

    function alteraProduto($conexao, $produto) {


echo ("* inicio funcao alteraProduto * "); //Aviso de teste

81)$query = "update produtos set nome = '{$produto->getNome()}',
82)codigo = {$produto->getCodigo()},
83)preco = {$produto->getPreco()},
84)descricao = '{$produto->getDescricao()}',
85)categoria_id = {$produto->getCategoria()->getId()},
86)cor_id = {$produto->getCor()->getId()},
87)tamanho_id = {$produto->getTamanho()->getId()} where id = 88)'{$produto->getId()}'";**

return mysqli_query($this->conexao, $query);

echo ($query); //Aviso de teste
}

This is the test I made of what’s coming from the product alterer:

* inicio alteração * * Envia para Banco Produto * array(8) { ["id"]=> string(1) "1" ["codigo"]=> string(2) "12" ["nome"]=> string(13) "Vestido Paula" ["preco"]=> string(6) "100.00" ["descricao"]=> string(20) "Vestido em Tricoline" ["cor_id"]=> string(2) "20" ["tamanho_id"]=> string(1) "5" ["categoria_id"]=> string(1) "2" } * inicio funcao alteraProduto *

This is the product-altering file:

    <?php
require_once 'conecta.php';
require_once 'banco-produto.php';
require_once 'banco-cor.php';
require_once 'banco-tamanho.php';
require_once 'banco-categoria.php';
require_once 'produto.php';
require_once 'cor.php';
require_once 'tamanho.php';
require_once 'categoria.php';


$produto = new Produto();
echo ("* inicio alteração * "); //Aviso de teste
$produto->setId( $_POST['id'] );
$produto->setCodigo( $_POST["codigo"]) ;
$produto->setNome( $_POST["nome"]);
$produto->setPreco( $_POST["preco"]);
$produto->setDescricao( $_POST["descricao"]);
$produto->setCor(new Cor());
$produto->setCor( $_POST["cor_id"]);
$produto->setTamanho(new Tamanho());
$produto->setTamanho( $_POST["tamanho_id"]);
$produto->setCategoria(new Categoria());
$produto->setCategoria( $_POST["categoria_id"]);
echo ("* Envia para Banco Produto * "); //Aviso de teste
var_dump($_POST);

1 answer

2


Your code is setting twice the category, one as an object and the other as the content of $_POST["categoria_id"].

Try to change your product-altering routine to look like this:

$produto->setCategoria(new Categoria());
$produto->getCategoria()->setId( $_POST["categoria_id"]);
echo ("* Envia para Banco Produto * "); //Aviso de teste

Note that you have this same problem with the property Tamanho. You create an object and then immediately arrow the content of $_POST["tamanho_id"].

  • 1

    Thank you very much Hertel on the fly!!! Solved.

  • You are welcome. If you have any more problems open a new question.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.