【发布时间】:2018-03-17 02:30:04
【问题描述】:
我需要使用 mysqli 以程序化的方式做事。还没有学过 oop 样式或 pdo。
我正在尝试创建一个分页页面,其中 10 页显示所有记录。记录分布在 10 页上。 尽管我的 tbl 有记录,但我注意到没有记录存在。 html 表中没有显示任何记录。 这是为什么呢?
以下是我尝试使用 mysqli 使用 PREP STMT 程序样式显示记录。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional/EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title><?php echo "$site_name $user"; ?> User's Notices in <?php echo
$server_time; ?> time.</title>
</head>
<body>
<br>
<center><span style="font-weight: bold;"><?php echo "$site_name $user"; ?>
User's Notices in <?php echo $server_time; ?> time.</span></center>
<br>
<br>
<?php
$query = "SELECT id,date_and_time,recipient_username,sender_username,notice
FROM notices WHERE recipient_username = ?";
if ($stmt = mysqli_prepare($conn,$query))
{
//Bind Parameter
mysqli_stmt_bind_param($stmt,'s',$recipient_username);
//Execute Statement
mysqli_stmt_execute($stmt);
//$result_1 = mysqli_query($conn,$query);
//Bind Result Variables
$result_1 = mysqli_stmt_bind_result
($stmt,$id,$date_and_time,
$recipient_username,$sender_username,$notice);
mysqli_stmt_store_result($stmt);
$rows_num = mysqli_stmt_num_rows($stmt);
printf("Result set has %d rows.\n",$rows_num);
$page_count = 10;
$page_size = ceil($rows_num / $page_count);
//Get the Page Number, Default is 1 (First Page).
$page_number = $_GET["page_number"];
if ($page_number == "") $page_number = 1;
$offset = ($page_number -1) * $page_size;
$query .= " limit {$offset},{$page_size}";
?>
<table width="1500" border="0" cellpadding="5" cellspacing="2"
bgcolor="#666666">
<?php if($rows_num) {?>
<tr name="headings">
<td bgcolor="#FFFFFF" name="column-heading_submission-number">Submission
Number</td>
<td bgcolor="#FFFFFF" name="column-heading_logging-server-date-&-time">Date
& Time in <?php echo $server_time ?></td>
<td bgcolor="#FFFFFF" name="column-heading_to">To</td>
<td bgcolor="#FFFFFF" name="column-heading_from">From</td>
<td bgcolor="#FFFFFF" name="column-heading_notice">Notice</td>
</tr>
<?php while($row = mysqli_stmt_fetch($stmt))
{
?>
<tr name="user-details">
<td bgcolor="#FFFFFF" name="submission-number"><?php echo $row['id']; ?>
</td>
<td bgcolor="#FFFFFF" name="logging-server-date-&-time"><?php echo
$row['date_and_time']; ?></td>
<td bgcolor="#FFFFFF" name="recipient_username"><?php echo
$row['recipient_username']; ?></td>
<td bgcolor="#FFFFFF" name="sender_username"><?php echo
$row['sender_username']; ?></td>
<td bgcolor="#FFFFFF" name="notice"><?php echo $row['notice']; ?></td>
</tr>
<?php
}
?>
<tr name="pagination">
<td colspan="10" bgcolor="#FFFFFF"> Result Pages:
<?php
$rows_num = mysqli_stmt_num_rows($stmt);
if($rows_num <= $page_size)
{
echo "Page 1";
}
else
{
for($i=1;$i<=$page_count;$i++)
echo "<a href=\"{$_SERVER['PHP_SELF']}?page_number={$i}\">{$i}</a> ";
}
?>
</td>
</tr>
<?php
}
else
{
?>
<tr>
<td bgcolor="FFFFFF">No record found! Try another time.</td>
</tr>
<?php
}
?>
</table>
<br>
<br>
<center><span style="font-weight: bold;"><?php echo "$site_name $user"; ?>
User's Notices in <?php echo $server_time; ?> time.</span></center>
<br>
<br>
</div>
<br>
</body>
</html>
<?php
}
//Free Result Set
mysqli_stmt_free_result($stmt);
//Close Database Connection
mysqli_stmt_close($stmt);
?>
我得到了回应:
结果集有 0 行。 没有找到记录!再试一次。
这是错误的。 mysql tbl中有记录。
忽略过时的 html,因为我稍后会将它们升级到 html 5。目前,我正在修复 php。
【问题讨论】:
-
你当然可以做一个更简单的例子,而不是把你的整个代码放在这里
-
如果我不在这里转储我的整个代码,那么你们专家将一无所知导致故障的原因,因为我对这整个事件完全感到困惑。
-
你当然需要用尽可能短的代码来复制问题——这也是你找出问题所在的方法。
标签: php mysqli pagination