嘿,我有一段效果很好的代码。但是当我按照
使用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>
我有点不确定问题出在哪里,但如果我不使用不同的话,我可以让它发挥作用。
答案 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?