【问题标题】:Stumped on this little SQL query被这个小 SQL 查询难住了
【发布时间】:2017-05-13 17:43:32
【问题描述】:

此 SQL 查询当前返回所有包含单词的值。例如,键入 Mon 将返回 Armoring、Behemoth、Emotion 等。我希望它返回以该值开头的单词,例如 Monkey、Moment、Monday 等。

希望我的解释有意义,代码如下。

    function action_ajax_drug_suggest() {

    global $wpdb;

    if ( empty( $_GET['term'] ) ) {
        die();
    }

    $drug_name = $wpdb->esc_like( $_GET['term'] );

    $table = $wpdb->prefix . self::TABLE_DRUG;

    $posts = $wpdb->get_results( $wpdb->prepare( "
                SELECT name
                FROM {$table}
                WHERE name LIKE '%%%s%%'
                    AND details <> ''
                LIMIT 5",
            $drug_name ) );


    foreach( $posts as $post ) {
        $names[] = array(
            'label' => $post->name,
        );
    }

    wp_send_json( $names );

}

【问题讨论】:

  • 所以从LIKE中删除前导%%
  • 试过了,我得到一个空响应。

标签: sql search autocomplete wildcard


【解决方案1】:

尝试省略前两个 %% 符号 LIKE '%%%s%%' 变成 LIKE '%s%%'

【讨论】:

  • 感谢您的这些建议,但这个不起作用。为什么会这样是有道理的,但这是我尝试的第一件事。
猜你喜欢
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2023-02-09
相关资源
最近更新 更多