"現在のIDの後に何も見つからない場合は、idから検索を開始1
"というコードのどこかが必要です。私は問題に出くわしています。たとえば、status == 1のid> 4のIDをクエリしています。id 5
に正しいステータスがないため、コードは実行されません。 id#1に戻る必要があります。より高いIDが存在しない場合、id = 1に戻るmysql where節を設定する方法
mysqlのテーブルの一例
-----------------------------------------
| id | page | status | referral |
-----------------------------------------
| 1 | new | 1 | new.php |
| 2 | used | 0 | used.php |
| 3 | lease | 1 | lease.php |
| 4 | video | 0 | video.php |
| 5 | serv | 0 | serv.php
-----------------------------------------
PHPコード
<?php
$referral = $_SERVER['HTTP_REFERER'];
$sql = "SELECT * FROM allpages
WHERE status = '1' && referral != '$referral' && id > '4'";
$result = mysqli_query($conn, $sql);
$num = mysqli_num_rows($result);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
if ($row['status'] == 1){
echo "<script>
setTimeout(function() {
window.location.href = '" . $row['url'] . "';
}, 10000);
</script>";
break;
}else { echo "no page to display"; }
}
}
mysqli_close($conn);
?>
あなたのSQLは[SQL Injection attacks](https://en.wikipedia.org/wiki/SQL_injection)に脆弱です。準備されたステートメントを使用する。 –
クエリに 'limit 1 'を追加するのは良い考えです。それに加えて、最初の行だけに興味があるので、whileループを削除したいと思うでしょう。だから、 'if'を取り囲む' while'を削除し、 'break'文を削除し、' limit 1'をクエリに追加して、2番目の問題を修正してください。 –