我正在尝试运行子查询,以便我可以根据搜索词出现的标签列对结果进行排序和输出。如果没有子查询,查询运行良好,但有了子查询,我得到了 '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/