php mysql结果分页问题
我对php mysql结果的分页有问题。用户必须能够在文本字段中输入一些内容,当按下“发送”按钮时,它必须立即显示前十个结果(现在这样做很好)。问题是链接(1、2、3等)不起作用:在某种程度上,它们返回到初始状态,即对mysql数据库中包含的所有数据进行分页 在我看来,问题在于我的这行代码:php mysql结果分页问题,php,html,mysql,pagination,Php,Html,Mysql,Pagination,我对php mysql结果的分页有问题。用户必须能够在文本字段中输入一些内容,当按下“发送”按钮时,它必须立即显示前十个结果(现在这样做很好)。问题是链接(1、2、3等)不起作用:在某种程度上,它们返回到初始状态,即对mysql数据库中包含的所有数据进行分页 在我看来,问题在于我的这行代码:echo“-”,这里的链接出错。我已经在互联网上搜索了很多,特别是在stackoverflow.com上,寻找我的问题的可能解决方案,但我没有找到任何详尽的方法来解决我的问题。你认为我错在哪里?文件名为pro
echo“-”代码>,这里的链接出错。我已经在互联网上搜索了很多,特别是在stackoverflow.com上,寻找我的问题的可能解决方案,但我没有找到任何详尽的方法来解决我的问题。你认为我错在哪里?文件名为prova.php
<!-- The code may contain words taken from the Italian language -->
<html lang="it-IT">
<head>
<link rel="icon" href="https://image.flaticon.com/icons/png/512/1427/1427106.png">
<title>Pagination tests</title>
</head>
<body style="background: #ECF0F1;font-family: Myanmar Text;margin-top:90px;">
<form action="prova.php?page=1" method="get"><input value="<?php echo $_GET['text']; ?>" type="text" name="text"><button name="send">INVIA</button><br></form>
<?php
include 'functions.php';
$con = mysqli_connect('localhost', 'root', '', 'cherubini');
$search = $_GET['text'];
if(isset($_GET['send'])) {
$search = $_GET['text'];
}
$result = mysqli_query($con, "SELECT *
FROM lemmi
WHERE LemmaNo LIKE '%".$search."%'");
$number_of_results = mysqli_num_rows($result);
$number_of_pages = ceil($number_of_results / 10);
if(!isset($_GET['page'])) {
$page = 1;
} else {
$page = $_GET['page'];
}
$this_page_first_result = ($page - 1) * 10;
$result = mysqli_query($con, "SELECT * FROM lemmi WHERE LemmaNo LIKE '%".$search."%' LIMIT ".$this_page_first_result.',10');
while ($row = mysqli_fetch_array($result)) {
echo "<b>". highlight($search, $row['Lemma']) . '</b> ' . $row['Definizione'] . "<br>";
}
for($page = 1; $page <= $number_of_pages; $page++) {
echo "<a href='prova.php?page=".$page."'>".$page."</a> -- ";
}
?>
</body>
</html>
分页测试
您的链接没有设置文本
或发送
,因此搜索查询将针对:
SELECT * FROM lemmi WHERE LemmaNo LIKE '%%'
您可能应该:
for($page = 1; $page <= $number_of_pages; $page++) {
echo "<a href='prova.php?page=".$page."&text=" . htmlspecialchars($search, ENT_QUOTES) . "&send=1'>".$page."</a> -- ";
}
在那之后,这句话也没有意义,像这样的话可能会更好:
if(!isset($_GET['send'])) {
echo 'a search term must be entered.';
} else {
$search = $_GET['text'];
...continue with search code in this block
}
请参阅关于sql注入和准备好的和绑定的查询的重要性以及“准备好的和绑定的查询的重要性”,您的意思是我必须在php中使用准备好的语句,对吗?你认为这个网页对我有用吗?不,看。始终使用php.net.IMO,w3schools上的任何内容都不会对您有用。但是我有偏见。警告:您完全可以使用参数化的预处理语句,而不是手动构建查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。
if(!isset($_GET['send'])) {
echo 'a search term must be entered.';
} else {
$search = $_GET['text'];
...continue with search code in this block
}