我有以下MYSQL查询:
if(isset($_GET["keywords"])) {
$keywords = $db->escape_string($_GET["keywords"]);
$query = $db->query("SELECT * FROM data WHERE scriptures LIKE '%{$keywords}%' OR books LIKE '%{$keywords}%'");
?>
<div class='result-count'>
Found <?php echo $query->num_rows; ?> results.
</div>
<?php
if($query->num_rows) {
while($r = $query->fetch_object()) {
?>
<div class='result'>
<?php
$scriptures_link = $r->scriptures_link;
$books_link = $r->books_link;
echo "<a href='$scriptures_link'> Hi </a> <br>";
echo "<a href='$books_link'> Bye </a> <br>";
?>
</div>
<?php
}
}
}
我有两个不同的类别:scriptures
和books
。 LIKE语句针对这两个组。因此,如果一行信息包含这两个项目的信息。因此,如果一个项目与LIKE语句匹配,但另一个项目不匹配,则两个项目都会显示在搜索结果中。如何将查询分开,一次只进行一次?
答案 0 :(得分:2)
您可以尝试使用Case语句。
SELECT *,
CASE
WHEN scriptures LIKE '%{$keywords}%' THEN scriptures_link
WHEN books LIKE '%{$keywords}%' THEN books_link
END as the_link
FROM data WHERE scriptures LIKE '%{$keywords}%' OR books LIKE '%{$keywords}%'"
然后回显$ r-&gt; the_link
如果有效,请告诉我。 (我没有测试过查询,但我认为是正确的。)
答案 1 :(得分:0)
我想你错过了这一行......
echo "<a href='$scriptures_link'> Hi </a> <br>";
echo "<a href='$books_link'> Bye </a> <br>";
试试这个..
echo "<a href='".$scriptures_link."'> Hi </a> <br>";
echo "<a href='".$books_link."'> Bye </a> <br>";
希望这有帮助...:D