Warning illegal string offset

-2

I created a class with arrays to be populated with objects, I made the select from the database, then I made a foreach to create a new object with each row of the select return and save those objects in the array. >

But when I try to create a new object I get the following error message:

  

Warning illegal string offset in ['cd_anuncio'] I checked the database and it is the same.

I used print_r to check if there was a return, and I checked that the return is correct.

public static function getAnuncios() {

  include("conexao.php");
  $contador = 0;

  $query = "SELECT * FROM tb_anuncio";

  $result = $conexao - > query($query);

  $formatResult = mysqli_fetch_assoc($result);
  print_r($formatResult);

  if (!isset($anuncios)) {

    foreach($formatResult as $anuncio) {
        $obj_anuncio = new anuncio($anuncio['cd_anuncio'],
        $anuncio['nm_titulo'],
        $anuncio['ds_anuncio'],
        $anuncio['cd_usuario'],
        $anuncio['nm_estado'],
        $anuncio['nm_cidade'],
        $anuncio['nm_bairro'],
        $anuncio['nm_categoria']);

        $anuncios[$contador] = $obj_anuncio - > getCd();
        $anuncios[$contador] = $obj_anuncio - > getNmTitulo();
        $anuncios[$contador] = $obj_anuncio - > getDsAnuncio();
        $anuncios[$contador] = $obj_anuncio - > getCdUsuario();
        $anuncios[$contador] = $obj_anuncio - > getNmEstado();
        $anuncios[$contador] = $obj_anuncio - > getNmCidade();
        $anuncios[$contador] = $obj_anuncio - > getBairro();
        $anuncios[$contador] = $obj_anuncio - > getCategoria();

        $contador++;#
        code...
    }
    die();
  }

}
    
asked by anonymous 16.06.2018 / 22:48

1 answer

1

The mysqli_fetch_assoc does not return all values in the database, it only returns one row at a time, when you used foreach the $ ad value actually were strings, because foreach iterated only one row based on column names, usage correct mysqli_fetch_assoc would be something like:

        $result = $conexao->query($query);

        if(!isset($anuncios))
        {
            while ($anuncio = mysqli_fetch_assoc($result)) 
            {
                $obj_anuncio = new anuncio($anuncio['cd_anuncio'],$anuncio['nm_titulo'],$anuncio['ds_anuncio'],$anuncio['cd_usuario'],$anuncio['nm_estado'],$anuncio['nm_cidade'],$anuncio['nm_bairro'],$anuncio['nm_categoria']);

                $anuncios[$contador]=$obj_anuncio->getCd();
                $anuncios[$contador]=$obj_anuncio->getNmTitulo();
                $anuncios[$contador]=$obj_anuncio->getDsAnuncio();
                $anuncios[$contador]=$obj_anuncio->getCdUsuario();
                $anuncios[$contador]=$obj_anuncio->getNmEstado();
                $anuncios[$contador]=$obj_anuncio->getNmCidade();
                $anuncios[$contador]=$obj_anuncio->getBairro();
                $anuncios[$contador]=$obj_anuncio->getCategoria();

                $contador++;
                # code...
            }
            die();
        }

As described in the PHP documentation : link

    
16.06.2018 / 23:04