gpt4 book ai didi

php - 对这些术语查询使用 ORDER BY

转载 作者:可可西里 更新时间:2023-11-01 07:53:38 25 4
gpt4 key购买 nike

对了,我有两个查询扫描 MYSQL 数据库中的关键字并返回它们,无论它们是 a) 在一起还是 b) 分开。我现在添加了一个名为“排名”的新列,按顺序对它们进行排名。我在每个查询中添加了“ORDER BY rank”,当我输入单个术语时,结果显示正确,但是当输入两个或更多术语时,我收到此错误:MySQL 查询错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“ORDER BY rank”附近使用的正确语法。 结果自动按 id 排序。当我从一个查询中删除 ORDER BY 标签时,另一个查询的标签将不起作用。我不明白?我的查询如下。

    // Terms Together
$query = " SELECT * FROM scan WHERE ";

$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0){
$query .= " AND ";
}
$query .= "keywords LIKE '%{$each}%' ORDER BY rank";
}

/* Query Statement Building - Terms Separate */
$query = " SELECT * FROM scan WHERE ";

$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0){
$query .= " OR ";
}
$query .= "keywords LIKE '%{$each}%' ORDER BY rank";
}

最佳答案

ORDER BY 必须出现在循环的末尾,而不是循环内部。否则每个查询你会得到多个 ORDER BY 语句,这是无效的:

foreach ($terms as $each) {
if ($i++ !== 0){
$query .= " OR ";
}
$query .= "keywords LIKE '%{$each}%'";
}
// Don't append the ORDER BY until after the loop
$query .= " ORDER BY rank";

更改您的两个循环以使用此模式而不是您当前拥有的模式。

关于php - 对这些术语查询使用 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com