O pedido wpdb LIKE mostra todos os dados do database

Gostaria de obter uma lista de user_nicenames e o ID. Mas nem todos os nomes de usuário que é o que estou recebendo agora. Eu entendo que eu deveria usar o% antes e depois do $ nome, apenas nada parece estar funcionando. Esta é a única maneira de obter algum resultado que encontrei até agora;

global $wpdb; //get access to the WordPress database object variable //get names of all users $name = $wpdb->esc_like(stripslashes($_POST['name'])).'%'; //escape for use in LIKE statement $sql = "SELECT user_nicename, ID FROM $wpdb->users WHERE user_nicename LIKE %s "; $sql = $wpdb->prepare($sql, $name); $results = $wpdb->get_results($sql); 

Como eu limito a saída para nomes de usuários apenas começando, por isso $_POST['name'] .'%' No código normal do php.

Solutions Collecting From Web of "O pedido wpdb LIKE mostra todos os dados do database"

Sua consulta é correta, o parâmetro similar será

 global $wpdb; //get access to the WordPress database object variable //get names of all users $name = $wpdb->esc_like(stripslashes($_POST['name']))."%"; $sql = "SELECT user_nicename, ID FROM $wpdb->users WHERE user_nicename LIKE %s "; $sql = $wpdb->prepare($sql, $name); $results = $wpdb->get_results($sql); 

Você pode verificar se $ _POST [‘name’] está obtendo um valor. Eu sugiro fazer eco da página para a debugging (talvez em tags de comentário se o site estiver ao vivo). Se $ _POST [‘name’] estiver vazio, todos os resultados serão retornados porque a consulta dirá user_nicename LIKE '%'

Apenas como uma precaução em qualquer caso, você deve fazer uma verificação condicional para ver se $ _POST [‘name’] está configurado e não está vazio (se você nunca quiser que todos os resultados retornem). Se estiver vazio ou nulo, adicione o código opcional de acordo, como para exibir uma mensagem de que nenhum resultado foi encontrado, etc., de acordo com a forma como deseja que seu aplicativo funcione.

Eu sugiro dividir sua declaração para fazer o cheque … então basicamente:

 $name = ''; if(isset($_POST['name'])){ $name = stripslashes($_POST['name']); } echo ''; if($name==null || $name==''){ //TODO: like return; }else { $name = $wpdb->esc_like($name).'%'; .... }