✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Um esboço para trabalhar com consultas de banco de dados no WordPress

46

Por mais que eu seja fã de certas APIs do WordPress para consultar o banco de dados, como:

Também sou fã de consultar diretamente o banco de dados quando necessário.

Como você notará, há uma maneira consistente de fazer isso e, como há momentos em que tenho feito isso com mais frequência, ultimamente, aqui está um formato básico para trabalhar com consultas de banco de dados no WordPress.

Se eu fizer isso, no entanto, geralmente há coisas que eu mantenho em mente:

  1. sempre verifique se a consulta está parametrizada (especialmente no caso de entrada do usuário),
  2. retornam as informações na forma de um array associativo.

O primeiro caso é para segurança; o segundo é mais ou menos por conveniência para tornar a iteração através dos dados mais simples por meio de funções de array PHP.

Consultas de banco de dados no WordPress

Primeiro, é importante entender dois conceitos:

  1. parametrização,
  2. coluna_array

Esses são o núcleo de como escrevo minhas consultas e trabalho com os resultados delas.

1 Parametrização

Você pode ler mais sobre isso no Codex, mas a parametrização é uma maneira de escrever consultas que funcionam para evitar injeção de SQL.

Na página do Codex :

Todos os dados em consultas SQL devem ter escape de SQL antes que a consulta SQL seja executada para evitar ataques de injeção de SQL. O preparemétodo executa essa funcionalidade para o WordPress, que suporta uma sintaxe semelhante a sprintf() e vsprintf().

Isso quer dizer que o método suporta tokens como %s, %d e %f ao passar informações para a consulta. Vou mostrar um exemplo disso mais tarde no post.

2 Trabalhando com colunas de matriz

Os resultados de tais consultas podem ser retornados de várias maneiras diferentes. Ou seja, como um objeto, uma matriz indexada numericamente ou uma matriz associativa. Na maioria das vezes, gosto de usar arrays (e mostrarei como fazer isso no WordPress mais adiante neste post).

Um esboço para trabalhar com consultas de banco de dados no WordPress

A razão, porém, é para que eu possa tirar proveito de array_column. Do manual do PHP:

array_column() retorna os valores de uma única coluna da entrada, identificada pela column_key. Opcionalmente, uma index_key pode ser fornecida para indexar os valores na matriz retornada pelos valores da coluna index_key da matriz de entrada.

Isso significa que, se você tiver uma matriz e ela tiver vários resultados, cada um com a mesma coluna, você pode simplesmente simplesmente passar a informação passando a matriz para um método e, em seguida, passando o nome da coluna para um método.

O resultado? Uma matriz numericamente indexada dos valores. Isso torna muito mais fácil iterar pelos dados por meio de array_map, usando for ou usando foreach.

Um esboço para consultar o banco de dados

Com essa lógica em vigor, aqui está o stub que normalmente uso sempre que estou trabalhando diretamente com consultas de banco de dados:

<?php
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "
        ",
        $userId
    ),
    ARRAY_A
);

if (empty($results)) {
  return;
}
$results = array_map($results, 'column_name');

E aqui está um exemplo com algumas informações diferentes para que você possa ver como funciona :

<?php
global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT
            user_id,
            meta_value
        FROM $wpdb->usermeta
        WHERE meta_key LIKE %s
        AND user_id = %d
        ",
        '%wc_authorize_net_cim_customer_profile_id%',
        wp_get_current_user()->ID;
    ),
    ARRAY_A
);

if (empty($results)) {
    return [];
}
$results = array_map($results, 'meta_value');

Consultar a tabela wp_user_meta pode parecer bobo, já que get_user_meta é uma função de API válida, mas achei que seria uma consulta fácil de entender, dado o que estou tentando explicar no passado.

De qualquer forma, não posso fornecer a consulta nem posso lidar com o caso em que os resultados podem voltar com várias colunas (nesse caso, você terá que trabalhar com algo diferente de array_map, mas isso deve ser fácil, certo? )

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação