MYsql和DISTINCT用法

时间:2017-03-24 03:20:05

标签: mysql

嘿,我有一段效果很好的代码。但是当我按照

使用DISTINCT时
<?php
$category = $_GET["state"];
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 

$start_from = ($page-1) * $results_per_page;
$sql = "SELECT DISTINCT CITY 
    FROM $datatable 
    WHERE STATE='$category'
    ORDER BY CITY ASC LIMIT $start_from, $results_per_page" ;
$rs_result = $conn->query($sql); 
?> 
<table border="1" cellpadding="4" width="100%">
<tr>

<?php 
 while($row = $rs_result->fetch_assoc()) {
?> 
            <tr>

            <td> <a href="browsepage2.php?state=<? echo $row["STATE"]; ?>&city=<? echo $row["CITY"]; ?>" ><? echo $row["CITY"]; ?></a></td>

            </tr>
<?php 
}; 
?> 
</table>

下一页行不会显示?我不确定这个问题。下一页的代码如下。

<?php
$category = $_GET["state"];
$city= $_GET["city"];
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 

$start_from = ($page-1) * $results_per_page;
$sql = "SELECT *
    FROM $datatable 
    WHERE STATE='$category'
    AND CITY='$city'
    ORDER BY PROVNAME ASC LIMIT $start_from, $results_per_page" ;
$rs_result = $conn->query($sql); 
?> 
<table border="1" cellpadding="4" width="100%">
<tr>

<?php 
 while($row = $rs_result->fetch_assoc()) {
?> 
            <tr>

            <td> <a href="browsepage2.php?state=<? echo $row["STATE"]; ?>&city=<? echo $row["CITY"]; ?>&shop=<? echo $row["PROVNAME"]; ?>" ><? echo $row["PROVNAME"]; ?></a></td>

            </tr>
<?php 
}; 
?> 
</table>

我有点不确定问题出在哪里,但如果我不使用不同的话,我可以让它发挥作用。

1 个答案:

答案 0 :(得分:1)

$sql = "SELECT DISTINCT CITY 
    FROM ...

在此处选择一个列,CITY。

但是您的链接格式代码取决于查询结果,包括列STATE。

<a href="browsepage2.php?state=<? echo $row["STATE"]; ?>&city=<? echo $row["CITY"]; ?>" >

如果没有它,您创建的链接将如下所示:

<a href="browsepage2.php?state=&city=Schenectady">

然后下一页将尝试获取请求参数'state'并发现它是空白的。如果请求参数为空,则没有默认状态。

$category = $_GET["state"];

这使得下一页的SQL查询:

$sql = "SELECT DISTINCT CITY 
    FROM $datatable 
    WHERE STATE=''
    ORDER BY CITY ASC LIMIT $start_from, $results_per_page" ;

我猜你的数据库中没有与state=''匹配的记录。

P.S。:顺便说一下,您应该开始使用带参数占位符的预准备查询,以防止您的网页被黑客入侵。 阅读How can I prevent SQL injection in PHP?