个人 post MsSQL & PHP 的分页和查询字符串
Paging and query string for individual post MsSQL & PHP
我写了一个分页脚本来分页我博客中的所有帖子。现在我想创建一个端点,以便我可以转到 mydomain/index.php?blogID1
、mydomain/index.php?blogID2
、mydomain/index.php?blogID3
、mydomain/index.php?blogID4
等
根据我当前的脚本,我在哪里可以读到有关执行此操作的信息,以及如何以最简单的方式实现它:
<?php
$rowsPerPage = 2;
try
{
$conn = new PDO( "sqlsrv:server=localhost ; Database=blog", "******", "*******");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
try
{
$tsql = "SELECT COUNT(blogID) FROM blog_posts";
$stmt = $conn->query($tsql);
$rowsReturned = $stmt->fetch(PDO::FETCH_NUM);
if($rowsReturned[0] == 0)
{
echo "No rows returned.";
}
else
{
$numOfPages = ceil($rowsReturned[0]/$rowsPerPage);
for($i = 1; $i<=$numOfPages; $i++)
{
$pageNum = "index.php?pageNum=$i";
print("<a href='$pageNum' class='btn btn-primary active btn-sm'>$i</a> ");
}
}
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY blogID DESC)
AS RowNumber,
blog_title,
blog_post,
blog_author,
blog_category,
blog_date,
blogID
FROM blog_posts)
AS Temp
WHERE RowNumber BETWEEN ? AND ?";
$stmt2 = $conn->prepare($tsql);
if(isset($_GET['pageNum']))
{
$highRowNum = $_GET['pageNum'] * $rowsPerPage;
$lowRowNum = $highRowNum - $rowsPerPage + 1;
}
else
{
$lowRowNum = 1;
$highRowNum = $rowsPerPage;
}
$params = array(&$lowRowNum, &$highRowNum);
$stmt2->execute(array($lowRowNum, $highRowNum));
while($row = $stmt2->fetch(PDO::FETCH_NUM) )
{
echo "$row[1]";
echo "$row[2]";
echo "$row[3]";
echo date_format( new DateTime($row['5']), 'd M Y, H:i' );
echo "$row[4]";
echo "$row[6]";
}
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
?>
行是post吗?
您可以按任何列对行进行排序,然后限制结果数量并根据请求的页面设置偏移量。
这是关于 mysql 那个端点:MySQL Data - Best way to implement paging?
例如,如果页面请求如下:index.php?pageNum=15 并且每页显示 5 posts,
使用 $page = $_GET['pageNum']
获取该值并为结果编号和偏移量 (LIMIT) 设置 PDO 准备语句。
声明$resultsPerPage = 5
SELECT *
FROM Posts
LIMIT :offset, :maxResults
并推送准备好的语句:
- 偏移量 -->
($page - 1) * $resultsPerPage
- 最大结果 -->
$resultsPerPage
我写了一个分页脚本来分页我博客中的所有帖子。现在我想创建一个端点,以便我可以转到 mydomain/index.php?blogID1
、mydomain/index.php?blogID2
、mydomain/index.php?blogID3
、mydomain/index.php?blogID4
等
根据我当前的脚本,我在哪里可以读到有关执行此操作的信息,以及如何以最简单的方式实现它:
<?php
$rowsPerPage = 2;
try
{
$conn = new PDO( "sqlsrv:server=localhost ; Database=blog", "******", "*******");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
try
{
$tsql = "SELECT COUNT(blogID) FROM blog_posts";
$stmt = $conn->query($tsql);
$rowsReturned = $stmt->fetch(PDO::FETCH_NUM);
if($rowsReturned[0] == 0)
{
echo "No rows returned.";
}
else
{
$numOfPages = ceil($rowsReturned[0]/$rowsPerPage);
for($i = 1; $i<=$numOfPages; $i++)
{
$pageNum = "index.php?pageNum=$i";
print("<a href='$pageNum' class='btn btn-primary active btn-sm'>$i</a> ");
}
}
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY blogID DESC)
AS RowNumber,
blog_title,
blog_post,
blog_author,
blog_category,
blog_date,
blogID
FROM blog_posts)
AS Temp
WHERE RowNumber BETWEEN ? AND ?";
$stmt2 = $conn->prepare($tsql);
if(isset($_GET['pageNum']))
{
$highRowNum = $_GET['pageNum'] * $rowsPerPage;
$lowRowNum = $highRowNum - $rowsPerPage + 1;
}
else
{
$lowRowNum = 1;
$highRowNum = $rowsPerPage;
}
$params = array(&$lowRowNum, &$highRowNum);
$stmt2->execute(array($lowRowNum, $highRowNum));
while($row = $stmt2->fetch(PDO::FETCH_NUM) )
{
echo "$row[1]";
echo "$row[2]";
echo "$row[3]";
echo date_format( new DateTime($row['5']), 'd M Y, H:i' );
echo "$row[4]";
echo "$row[6]";
}
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
?>
行是post吗? 您可以按任何列对行进行排序,然后限制结果数量并根据请求的页面设置偏移量。 这是关于 mysql 那个端点:MySQL Data - Best way to implement paging?
例如,如果页面请求如下:index.php?pageNum=15 并且每页显示 5 posts,
使用 $page = $_GET['pageNum']
获取该值并为结果编号和偏移量 (LIMIT) 设置 PDO 准备语句。
声明$resultsPerPage = 5
SELECT *
FROM Posts
LIMIT :offset, :maxResults
并推送准备好的语句:
- 偏移量 -->
($page - 1) * $resultsPerPage
- 最大结果 -->
$resultsPerPage