私は利益のためにプロジェクトを作成しており、ページネーションに問題があります。最初のアイデアは「もっとロードする」<ですが、それは夢の中だけです。 MySQLの構文が間違っている可能性があります。このコードを修正するには?多分もっと良い解決策がありますか?私はすべての組み合わせを試しました ".."、 ".."、 "。これはSQLインジェクションを利用することによって悪用することもできますか?PHP MySQLiページネーションLIMIT、日付と日付による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インジェクションの問題が何であるかを読んでいませんでしたか?それを理解するのが面倒な場合は、表示されているコードが脆弱であることを既に知っているでしょう。 _ "このコードを修正するにはどうすればいいですか?" _ - 確かに最初に間違っているものが何であるか把握するためにここにダンプするだけです。 [ask]を読んでから、適切な問題の説明をしてください。 – CBroe
私はこれをdownvotingの理由は表示されません、彼は少しの助けを求めている、私はバッジを探してdownvotedすべての人だと思う.. – Ultrazz008
'mysqli_num_rows($ result);'の代わりにすべてのレコードを選択した後、 'COUNT(1)posts from WHERE posts_author =?'を実行し、その結果を取得します。パラメトリッククエリとプリペアドステートメントを使用して開始するのも良い場所です。あなたのコードはそれを使用するように移行するのが簡単なので、SQLインジェクションについて少し心配する必要があります。 – apokryfos