-1
我创建的项目不是为了营利,而是有分页问题。第一个想法是“加载更多”< - 但它只是在梦中。也许MySQL的语法是错误的。如何解决这个问题?也许有更好的解决方案?我尝试了所有组合“..”,“..”,“`。这也可以通过使用SQL注入来利用?PHP MySQLi分页LIMIT,WHERE和ORDER BY`date` DESC问题
MySQLi connection:
$mysqli = new mysqli('localhost','root','','tablename');
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
/* Change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
exit();
}
Paggination:
$items_per_page = 5;
$login = $_SESSION['login'];
$per_page = $items_per_page;
if (isset($_GET['page'])) {
$page = $_GET['page'];
}else {
$page = 1;
}
$start_from = ($page-1) * $per_page;
//Selecting the data from db
$date = $mysqli->query("SELECT post_id FROM posts WHERE posts_author = '.$login.' ORDER BY `date` DESC LIMIT $start_from, $per_page");
while($row = $date->fetch_array()){
echo $row["post_id"];
}
//
//Select all from DB
$query = $mysqli->query("SELECT post_id FROM posts WHERE posts_author='$login' ORDER BY date DESC");
$result = mysqli_query($mysqli, $query);
$total_records = mysqli_num_rows($result);
$total_pages = ceil($total_records/$per_page);
//Going to first page
echo '<a href="' .ABSOLUTE_URL. '/post/1">first page</a> ';
for ($i=1; $i<=$total_pages; $i++){
echo '<a href="' .ABSOLUTE_URL. '/post/'.$i.'">'.$i.'</a> ';
};
// Going to last page
echo '<a href="' .ABSOLUTE_URL. '/post/'.$total_pages.'">last page</a> ';
_“这也可以通过使用SQL注入来利用?” - 当然可以。为什么你甚至不得不问这个问题 - 你没有读到SQL注入的问题究竟是什么?如果您不明白这一点,那么您已经知道所示的代码很脆弱。 _“如何解决这个问题?”_--明确地说,不仅仅是将它倾倒在这里让我们弄清楚什么是错误的。请阅读[问],然后给我们一个适当的问题描述。 – CBroe
我没有看到这样做的原因,他只是要求帮助外面,我想你是所有谁downvoted只是寻找徽章.. – Ultrazz008
而不是做'mysqli_num_rows($结果);'选择所有记录后,你可以做'SELECT COUNT(1)FROM posts WHERE posts_author =?'并得到结果。这也是开始使用参数化查询和准备语句的好地方。正如你的代码很容易迁移到使用它,你将不必担心SQL注入。 – apokryfos