MYSQL/PHP:如何按字符串的起始点排序? 选择 SQL\u计算\u找到\u行帖子。*, 案例 当postETA.meta_值REGEXP'$regex' 那么1 其他0 在标题中以关键字结尾, 匹配(posts.post\u内容) 以(“.addslashes($s)。”)作为mysql_分数 从…起 $wpdb->posts as posts, $wpdb->postmeta作为postmeta 哪里 posts.post_date_gmt

MYSQL/PHP:如何按字符串的起始点排序? 选择 SQL\u计算\u找到\u行帖子。*, 案例 当postETA.meta_值REGEXP'$regex' 那么1 其他0 在标题中以关键字结尾, 匹配(posts.post\u内容) 以(“.addslashes($s)。”)作为mysql_分数 从…起 $wpdb->posts as posts, $wpdb->postmeta作为postmeta 哪里 posts.post_date_gmt,php,sql,Php,Sql,我假设上面的代码不起作用,因此您提出了一个问题 尝试在SELECT子句中添加charindex($s,'keyword_in_title')作为cOrder,然后按cOrder DESC排序 祝你好运 至于订单问题(除了评论中指出的@Gumbo逃逸问题),CHARINDEX不是一个问题。该函数看起来是相同的(至少粗略地看一下SQLServer和MySQL上的文档) 将列作为子字符串,因此结果以要排序的字母/位置开始。您的标题是mysql,但CHARINDEX是TSQL/SQL Server…ad

我假设上面的代码不起作用,因此您提出了一个问题

尝试在
SELECT
子句中添加
charindex($s,'keyword_in_title')作为cOrder
,然后按cOrder DESC排序

祝你好运

至于订单问题(除了评论中指出的@Gumbo逃逸问题),
CHARINDEX
不是一个问题。该函数看起来是相同的(至少粗略地看一下SQLServer和MySQL上的文档)


将列作为子字符串,因此结果以要排序的字母/位置开始。您的标题是mysql,但CHARINDEX是TSQL/SQL Server…
addslashes
不适合清理mysql中使用的字符串;使用
mysql\u real\u escape\u string
或prepared语句。首先,没有
CHARINDEX
mysql函数。第二,不需要选择列来按其排序…嘿,不需要-1我,函数charindex()函数的原始问题。我只是建议在选择时计算它,而不仅仅是为了排序。帖子中没有错误。哦,现在我知道你在做什么了。。。我改变了密码。。。如果这不起作用,你能提供一个
$s
的例子吗?发生了一些事情,但它肯定不是按单词的第一次出现排序的$s是用户正在搜索的关键字。您100%确定吗?您可以尝试在PHPMyAdmin(或类似的)中运行它,并尝试不同的设置。。。但你就是这样做的。。。您可能(实际上是这样)希望将标题中的
关键字\u更改为更有意义的列(可能是
发布内容
)。。。现在,它是按0或1的列排序的。。。因此,可能会将其更改为按位置排序(\'.$s.\',
post\u content
)DESC
,它将按内容字符串排序。(或任何您想按其排序的列)。。。
 SELECT
      SQL_CALC_FOUND_ROWS posts.*,
      CASE
        WHEN postmeta.meta_value REGEXP '$regex'
          THEN 1
          ELSE 0
        END AS keyword_in_title,

      MATCH ( posts.post_content )
        AGAINST ( '".addslashes( $s )."' ) AS mysql_score
    FROM
      $wpdb->posts as posts,
      $wpdb->postmeta as postmeta
    WHERE
      posts.post_date_gmt <= now()
      AND postmeta.post_id = posts.ID
      AND postmeta.meta_key='_headspace_page_title'
      AND posts.post_password = ''
      AND posts.post_status = 'publish'
      AND posts.post_type != 'attachment'
      AND ( postmeta.meta_value REGEXP '$regex'
        OR posts.post_content REGEXP '$regex')
    GROUP BY
      posts.ID
    ORDER BY
      charindex($s, 'keyword_in_title') DESC
    LIMIT 
      $offset, 
      $limit
$s = mysql_real_escape_string($s);
$order = 'ORDER BY LOCATE(\''.$s.'\', `keyword_in_title`) DESC';