• Resolvido luizarusso1

    (@luizarusso1)


    Fala, pessoal
    Minha dúvida é a seguinte: Existe algum bloqueio ou regra para select em tabelas nativas?

    Tenho o seguinte código em uma pagina.php:

    <?php 
        $connect = mysqli_connect("localhost", "user", "senha", "banco");  
    
        if (mysqli_connect_errno()){
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    
        $query = "SELECT ID, post_title FROM wp_posts where post_type='product' and post_status='publish' ORDER BY post_title";  
        $result = mysqli_query($connect, $query);  
        $output = array();    
        while($row = mysqli_fetch_assoc($result)) 
        {  
            $output[] = $row;  
        }
        echo json_encode($output);  
    ?> 

    E ele não retorna nada, não da erro, mas também não exibe nada.
    Já se eu trocar a $query por: $query = "SELECT CodFilial, NomeFantasia, RazaoSocial, CNPJ FROM wp_escola WHERE Situacao='a' ORDER BY nomeFantasia ASC";

    ele me retorna o JSON normalmente (???)
    a única diferença que consegui identificar entre as duas é que wp_posts é uma tabela nativa enquanto wp_escolas eu quem criei…

    Alguém saberia o que pode ser? 🙁
    Obrigadaaaa

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Moderador Felipe Elia

    (@felipeelia)

    Oi @luizarusso1,

    Você tem algum produto publicado no site? Tente excluir a cláusula WHERE inteira da primeira query para testar.

    De qualquer forma, não use queries assim no WordPress. Use a variável global $wpdb (e seu método get_results) porque ela já tem a conexão com o banco. Além disso evite colocar o prefixo “wp_” nas suas queries, porque este parâmetro pode mudar de instalação para instalação. Use a propriedade prefix da $wpdb.

    Resumindo, sua segunda query ficaria mais ou menos assim:

    global $wpdb;
    $results = $wpdb->get_results( "SELECT CodFilial, NomeFantasia, RazaoSocial, CNPJ FROM {$wpdb->prefix}escola WHERE Situacao='a' ORDER BY nomeFantasia ASC" );

    Se, por acaso, você está “fora” do ambiente WordPress veja se consegue incluí-lo como um framework (com um require_once para o arquivo wp-load.php). Caso esteja fazendo alguma coisa com ajax, use a API do WP (mais aqui, em português).

    Qualquer dúvida volte aqui que vamos tentando ajudar. Se conseguir resolver não esqueça de marcar seu tópico como resolvido.

    Criador do tópico luizarusso1

    (@luizarusso1)

    Bom dia, Felipe.
    Estive sem o meu pc, por isso não consegui testar antes. Só remover da clausula where em diante não rolou, eu tinha testado na sexta-feira, mas acabei de trocar o código acima por:

    <?php 
        global $wpdb;
        $results = $wpdb->get_results( "SELECT ID, post_title FROM {$wpdb->prefix}posts where post_type='product' and post_status='publish' ORDER BY post_title" );
        echo json_encode($results);  
    ?>  

    E funcionou! Muito obrigada.
    Vou marcar como resolvido e ler sobre a API que comentou.
    Valeu mesmooo

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • O tópico ‘consulta em tabela nativa WP’ está fechado para novas respostas.