O seguinte é um aviso para a classe wpdb.
enlace
Um aviso
Algumas das funções dessa classe usam uma instrução SQL como entrada.
Você deve SQL escapar todos os valores não confiáveis que você incorpora no SQL
consulta para evitar ataques de injeção de SQL. Verifique a documentação para ver
se a função que você planeja usar escapa SQL para você ou espera que ele
ser pré-escapado.
Então eu li isso como - a classe wpdb não prepara ou escapa automaticamente os dados para você.
Tenho certeza de que, se você não puder confiar 100% na fonte de dados em seu código, sugiro usar a classe de preparação (?).
Não pense que o uso da classe de preparação corrigirá o problema sem usar a classe de preparação adequadamente. Eu sou relativamente novo nisso, então por favor poste quaisquer correções como resposta se eu não estiver certo.
$ wpdb- > prepare ("SELECIONE * DA tabela WHERE ID =% d E nome =% s", $ id, $ nome);
Na declaração acima, existem dois atributos extras. Um para o ID e outro para o nome. Tanto quanto eu li, cada um corresponde ao número de itens em sua consulta. Também% s = string,% d = inteiro e% f = float.
Além disso, da minha leitura, se você não colocar os atributos extras, então o preparo não fará nada. Haverá um aviso, mas se você desligar isso, talvez você não saiba.
Aqui está um exemplo da própria referência de classe, onde eles adicionam uma classe de preparação em um INSERT abaixo.
enlace
Consulta $ wpdb- > ($ wpdb- > prepare ("INSERT INTO $ wpdb- > postmeta (
post_id, meta_key, meta_value) VALUES (% d,% s,% s) ",
array (10, $ metakey, $ metavalue)));
A minha preocupação é que a resposta votada esteja incorreta de acordo com a mesma página que 'nobody' referencia. Eu estou supondo que você use prepare (), mas não outros métodos padrão de escape php porque eu tomei esta resposta tão correta assim ... até cavar mais fundo.
De qualquer forma ... talvez as coisas tenham mudado desde a resposta original.