php - 使用 PHP/MySQL 运行 SQL 查询,然后对结果重新排序

标签 php mysql sql

我正在尝试运行子查询,以便我可以根据搜索词出现的标签列对结果进行排序和输出。如果没有子查询,查询运行良好,但有了子查询,我得到了 'mysqli_num_rows() 需要参数 1为 mysqli_result, boolean 鉴于'错误。非常感谢任何帮助。

$sql = "SELECT * FROM (SELECT trackname, tag1, tag2, tag3, tag4, tag5, songtitle, zip_link, album_id, description, album_name, album_desc,  small_logo  FROM albums, tracks WHERE 

        (tag1 = '{$search_tag}' OR
        tag2 = '{$search_tag}' OR
        tag3 = '{$search_tag}' OR
        tag4 = '{$search_tag}' OR
        tag5 = '{$search_tag}')    AND   tracks.album_id = albums.id ) ORDER BY tag1
        ";  

}  else {
    echo '<br/>please enter a search word or phrase<br/><br/>';
    die;
}


        $result = mysqli_query ($mysqli, $sql);
        if($result === false)  { echo 'mysql error'; }
        $count=mysqli_num_rows($result);
        if ($count < 1) {echo '<span class="sorry">sorry - your search returned no results</div><br/>';}    
            else    {   while ($row = mysqli_fetch_array($result)) 
                `       {   

最佳答案

为什么使用子查询?以下似乎是您想要的查询:

SELECT trackname, tag1, tag2, tag3, tag4, tag5, songtitle, zip_link, album_id,
       description, album_name, album_desc,  small_logo
FROM albums join
     tracks
     on tracks.album_id = albums.id
WHERE '{$search_tag}' in (tag1, tag2, tag3, tag4, tag5)
ORDER BY tag1;

另请注意使用正确的 join 语法以及使用 in 来简化 where 逻辑。

关于php - 使用 PHP/MySQL 运行 SQL 查询,然后对结果重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584695/

相关文章:

php - 以数据流的形式写入div

php - 如何在 Notepad++ 编辑器中缩进 HTML 或 PHP 代码?

mysql - 更改模式时如何加快 MySQL 中的表重建?

mysql - 错误号 : 1064 when select from database

python - 选择 N 条随机记录

php - 如何在 PHP 中读取 excel 数据(office 2007 xlsx)?

php - 从本地主机连接到远程 mysql

php - mysql注入(inject)+强制用户使用列表进行数据输入

mysql - 如何在 MySQL 中找到 "Delete rows ignoring errors"?

mysql - 优化 1.5m 条记录的 mysql 表,其中大部分被软删除