wpdb LIKE-запрос показывает все данные базы данных

Я хотел бы получить список user_nicenames и ID. Но не все имена пользователей, которые я сейчас получаю. Я понимаю, что я должен использовать% до и после $ name, только ничего не работает. Это единственный способ получить некоторый результат, который я нашел до сих пор;

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); 

Как ограничить вывод только именами user_nicenames, начиная с $_POST['name'] .'%' В нормальном PHP-коде.

Solutions Collecting From Web of "wpdb LIKE-запрос показывает все данные базы данных"

Ваш запрос прав, аналогичный параметр будет

 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); 

Можете ли вы проверить, что $ _POST ['name'] получает значение. Я предлагаю повторить его на странице для отладки (возможно, в тегах комментариев, если сайт активен). Если $ _POST ['name'] пуст, все результаты будут возвращены, потому что запрос будет user_nicename LIKE '%'

Как и в любом случае предосторожность, вы должны сделать условную проверку, чтобы убедиться, что $ _POST ['name'] установлен и не пуст (если вы никогда не хотите, чтобы все результаты возвращались). Если пустым или нулевым, добавьте необязательный код соответственно, например, чтобы отобразить сообщение, что результаты не найдены, и т. Д. На основе того, как вы хотите, чтобы ваше приложение работало.

Я предлагаю разбить ваше заявление, чтобы сделать чек .. так в основном:

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