我有以下查詢,並希望僅列出第一個匹配項。使用DISTINCT過濾重複項?
$first = $_GET['category'];
$first = $first[0] . "%";
$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
(?類別= B)
所以DISTINCT能做到這一點嗎?這是我嘗試過,但沒有奏效:
$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
編輯:這裏是完整的代碼:
function getCategory() {
$first = $_GET['category'];
$first = $first[0] . "%";
$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%'") or die(mysql_error());
//$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error());
if(mysql_num_rows($query) == 0) {
echo "Geen resultaten gevonden.";
} else {
while ($row = mysql_fetch_assoc($query)) { ?>
<p><a href="/<?= $_GET['category']; ?>/<?= strtolower($row['authorclean']); ?>/"><?= $row['author']; ?></a></p>
<?php }
}
}
(B%只是爲了測試)
如果我運行這下面的查詢直接在數據庫中得到兩個結果。如果我用上面的代碼運行,我只是得到一個空的頁面(除了已經存在的HTML)。
SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%'
「沒有工作」是什麼意思?你有錯誤嗎?你有錯誤的結果嗎?也請閱讀SQL注入。不要直接在SQL查詢中使用任何外部輸入而不能將其轉義。 – liquorvicar 2012-04-15 12:16:27
它不返回任何結果,只是一個空的頁面。沒有錯誤消息。 – user1333327 2012-04-15 13:40:45
你傾銷了實際的查詢,並直接運行該數據庫,看看它是否返回任何結果? – liquorvicar 2012-04-15 13:51:51