使用PHP从sql获取有限的数据
实际上,我想使用php while命令从sql收集数据,如下所示:使用PHP从sql获取有限的数据,php,mysql,sql,Php,Mysql,Sql,实际上,我想使用php while命令从sql收集数据,如下所示: while ($res = mysql_fetch_assoc($dat)){//code here} 但当我运行它时,它会发送sql中的所有记录。我只想显示有限的记录。如何做到这一点。还有一个问题,我可以将所有记录拆分为不同的页面吗?添加查询限制 或为循环添加计数- $count = 1; while ($res = mysql_fetch_assoc($dat)){ if($count > 10) {
while ($res = mysql_fetch_assoc($dat)){//code here}
但当我运行它时,它会发送sql中的所有记录。我只想显示有限的记录。如何做到这一点。还有一个问题,我可以将所有记录拆分为不同的页面吗?添加查询限制
或为循环添加计数-
$count = 1;
while ($res = mysql_fetch_assoc($dat)){
if($count > 10) {
break;
}
// rest of the code
$count++:
}
使用sql的限制功能。
例如:如果您想获取10条记录,那么您的查询应该如下所示:
SELECT * FROM table_name LIMIT 0,10;
其中“0”是起始值,“10”是上述查询中的记录数。为此使用MYSQL LIMIT子句 注: 您可以使用LIMIT来限制查询必须获取的行数。 您指的是分页,将记录拆分为多个页面。 我将使用mysqli_*而不是不推荐使用的mysql_* 我已经把一些解释放进去了 替换必要的表名、列名和连接变量。 您可以从以下内容开始:
$result = mysqli_query($con,"SELECT * FROM Devices2 ORDER BY name");
$count = mysqli_num_rows($result); /* COUNT THE TOTAL ROW */
$rowsperpage = 20; /* NUMBER OF ROW PER PAGE */
$totalpages = ceil($count / $rowsperpage);
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {
$currentpage = (int) $_GET['currentpage'];
} else {
$currentpage = 1;
}
if ($currentpage > $totalpages) {
$currentpage = $totalpages;
}
if ($currentpage < 1) {
$currentpage = 1;
}
$offset = ($currentpage - 1) * $rowsperpage;
?>
<table><!-- START OF TABLE OF RECORDS -->
<?php
/* START OF SHOWING THE RECORD */
if($stmt = $con->prepare("SELECT name FROM Devices2 ORDER BY name LIMIT $offset, $rowsperpage")){
$stmt->execute();
$stmt->bind_result($name);
while($stmt->fetch()){
?>
<tr>
<td><?php echo $name; ?></td><!-- ROW OF RECORD -->
</tr>
<?php
} /* END OF WHILE LOOP */
$stmt->close();
} /* END OF PREPARED STATEMENT */
if($count == 0){ /* IF NO RECORD FOUND */
?>
</table>
<h1>No record found</h1>
<?php
}
else { /* ELSE, START THE PAGINATION LINK */
echo '<tr height="30px;" valign="bottom"><td>';
/* THIS IS THE SECOND TABLE FOR THE PAGINATION LINK */
echo "<table style='border-collapse:separate; border-spacing:3px;'><tr>";
/****** build the pagination links ******/
$range = 2;
if ($currentpage > 1) {
$prevpage = $currentpage - 1;
echo "<td style='width:70px; background-color:fff; border:solid #08c 1px; font-size:14px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage' style='background-color:fff;'>Previous</a> </td>";
}
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo "<td style='width:20px; background-color:fff; font-size:14px; border:solid #ccc 2px;' align='center'> <font color='#ccc'><b>$x</b></font> </td>";
} else {
echo "<td style='width:20px; background-color:fff; font-size:14px; border:solid #08c 1px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?currentpage=$x' style='background-color:fff;'>$x</a> </td>";
}
}
}
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo "<td style='width:70px; background-color:fff; font-size:14px; border:solid #08c 1px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?¤tpage=$nextpage' style='background-color:fff;'>Next</a> </td>";
} // end if
/****** end build pagination links ******/
echo "</tr></table></td></tr>";
} /* END OF ELSE IF COUNT 0 */
?>
</table>
弥尔顿?你的疑问是什么;您可以使用where子句来排除?分页可能通过limit和offset子句完成,请参阅。直到milted与鱼类和生殖腺有关……我建议改进mysql查询以获取有限的数据。而不是在PHP中做同样的事情。不确定你想做什么,但是你也应该考虑使用PDO还是MySQL?还是有限?您可以使用限制。您的查询限制*您想要的号码*。我想你指的是分页来分割记录?@Luke,所以首先我需要制作一个脚本,为sql查询创建自动分页限制。然后我要去拿它?是吗?@sgtBOSE是的。为了某人
$result = mysqli_query($con,"SELECT * FROM Devices2 ORDER BY name");
$count = mysqli_num_rows($result); /* COUNT THE TOTAL ROW */
$rowsperpage = 20; /* NUMBER OF ROW PER PAGE */
$totalpages = ceil($count / $rowsperpage);
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {
$currentpage = (int) $_GET['currentpage'];
} else {
$currentpage = 1;
}
if ($currentpage > $totalpages) {
$currentpage = $totalpages;
}
if ($currentpage < 1) {
$currentpage = 1;
}
$offset = ($currentpage - 1) * $rowsperpage;
?>
<table><!-- START OF TABLE OF RECORDS -->
<?php
/* START OF SHOWING THE RECORD */
if($stmt = $con->prepare("SELECT name FROM Devices2 ORDER BY name LIMIT $offset, $rowsperpage")){
$stmt->execute();
$stmt->bind_result($name);
while($stmt->fetch()){
?>
<tr>
<td><?php echo $name; ?></td><!-- ROW OF RECORD -->
</tr>
<?php
} /* END OF WHILE LOOP */
$stmt->close();
} /* END OF PREPARED STATEMENT */
if($count == 0){ /* IF NO RECORD FOUND */
?>
</table>
<h1>No record found</h1>
<?php
}
else { /* ELSE, START THE PAGINATION LINK */
echo '<tr height="30px;" valign="bottom"><td>';
/* THIS IS THE SECOND TABLE FOR THE PAGINATION LINK */
echo "<table style='border-collapse:separate; border-spacing:3px;'><tr>";
/****** build the pagination links ******/
$range = 2;
if ($currentpage > 1) {
$prevpage = $currentpage - 1;
echo "<td style='width:70px; background-color:fff; border:solid #08c 1px; font-size:14px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage' style='background-color:fff;'>Previous</a> </td>";
}
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo "<td style='width:20px; background-color:fff; font-size:14px; border:solid #ccc 2px;' align='center'> <font color='#ccc'><b>$x</b></font> </td>";
} else {
echo "<td style='width:20px; background-color:fff; font-size:14px; border:solid #08c 1px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?currentpage=$x' style='background-color:fff;'>$x</a> </td>";
}
}
}
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo "<td style='width:70px; background-color:fff; font-size:14px; border:solid #08c 1px;' align='center'> <a href='{$_SERVER['PHP_SELF']}?¤tpage=$nextpage' style='background-color:fff;'>Next</a> </td>";
} // end if
/****** end build pagination links ******/
echo "</tr></table></td></tr>";
} /* END OF ELSE IF COUNT 0 */
?>
</table>