correct sql query does not work in php

Asked

Viewed 329 times

2

I have a query, where this query works perfectly in mysql Workbench, but in php does not work.

$dados = explode("-",$ids);

$sql = "SELECT 


                    prt_produto_item.nome as nome_item,
                    prt_produto_item.qtd_referencia as qtd_referencia,
                    prt_produto_item.valor_referencia as valor_referencia,
                    prt_produto_item.valor_unitario as valor_unitario

                    FROM prt_produto_item_modulo_tipo

                    JOIN prt_produto_item ON prt_produto_item_modulo_tipo._id_produto_item = prt_produto_item.id_produto_item 
                    JOIN prt_produto_tipo_licenciamento ON prt_produto_item_modulo_tipo._id_tipo_licenciamento = prt_produto_tipo_licenciamento.id_tipo_licenciamento 
                    WHERE prt_produto_tipo_licenciamento.nome = '".$dados[1]."' AND prt_produto_item.nome = '".$dados[0]."';";
            $stmt = DB::prepare($sql);

            echo $stmt->execute();
               print_r( $stmt->fetchAll());

It runs cute, but it gives me back an empty array.

When I take prt_product.item name = $data[0] it works fine in php.

Note: the $data = explodes ("-",$ids); it’s coming perfectly

Change - echo sql result

SELECT 


                    prt_produto_item.nome as nome_item,
                    prt_produto_item.qtd_referencia as qtd_referencia,
                    prt_produto_item.valor_referencia as valor_referencia,
                    prt_produto_item.valor_unitario as valor_unitario

                    FROM prt_produto_item_modulo_tipo

                    JOIN prt_produto_item ON prt_produto_item_modulo_tipo._id_produto_item = prt_produto_item.id_produto_item 
                    JOIN prt_produto_tipo_licenciamento ON prt_produto_item_modulo_tipo._id_tipo_licenciamento = prt_produto_tipo_licenciamento.id_tipo_licenciamento 
                    WHERE prt_produto_tipo_licenciamento.nome = 'Comercial' AND prt_produto_item.nome = 'Até';

The return of the same query, in sql inserir a descrição da imagem aqui

my class DB

class DB{
    private static $instance;
    public static function getInstance()
    {
        if(!isset(self::$instance))
        {
            try
            {
                self::$instance = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME , DB_USER, DB_PASS) ;
                //self::$instance->exec("set names utf8");
                self::$instance->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                self::$instance->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

            } catch (PDOException $e)
            {
                echo $e->getMessage();
            }
        }
        return self::$instance;
    }


    public static function prepare($sql){
        return self::getInstance()->prepare($sql);
    }
}
  • See if there are any errors: if(!$stmt->execute()){ print_r($stmt->errorInfo());}. In the worst case the Ncode may be wrong there chews that accent.

  • You didn’t make no mistake, man

  • He just can’t find anything

  • Ask the class implementation question DB.

  • have already put....

  • And the return of $stmt->execute() is False?

  • no, ta come true, just returning me empty, as if I had not found, but when run this same query in the database manager works perfectly

  • Have you tested with any word other than Até, who doesn’t have accents?

  • No, the problem I need you to be exactly that word

  • But I’ll try it with other words, see if you find

  • Try: AND prt_producto_item.name = '". utf8_encode($data[0])."';";

  • I already tested to see if I was giving the accent, is not, come straight :(

  • Man, I put utf_decode... it worked

  • 1

    Show... if you do not want to use utf8_encode at all, put the application and database with the same encoding or add the following parameter to the PDO: $this->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

  • 1

    All right, then I’m gonna do a standardized system again, so I guess that’s the only time you blew the accent

Show 10 more comments
No answers

Browser other questions tagged

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