-2

メールの有効化を要求するログイン システムを作成しました。それはすべて正常に動作します。ただし、実際の「スパム」保護はありません。ユーザーがアカウントを作成すると、列「アクティブ化」=「いいえ」の行が挿入されます。

ユーザーが自分のアカウントを 3 時間有効にしなかった場合、MySQL データベースから行を削除するようにしたいと考えています。以下を 30 分ごとに実行する cron ジョブを作成しました。

<?php

ob_start();
include 'global.php';
ob_end_clean();

$check_times = (time() - ('-3 hours'));
$query = "SELECT * FROM users WHERE time<=$check_times and activated='NO'";
$result = mysql_query($query) or trigger_error(mysql_error().$query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$inactive_user = $row['username'];

echo $inactive_user;
echo "<br>";
echo $check_times;
?>

「global.php」はデータベースに接続しています。上記のコードは機能しますが、1行のみです(最初のインスタンスの値のみを返します)

「Do While」と「Loop until」などを調べましたが、括弧に何を入れればよいかわかりません... Do While (//ここに何を入れますか?)

現時点では、コードはインスタンスのみをエコーアウトしますが、削除するように変更します

4

2 に答える 2

0
while($row = mysql_fetch_array($result)) {
    $inactive_user = $row['username'];
}

mysql_さらに、関数の使用を段階的に廃止mysqliし、代替として検討する必要があります -mysql_は非推奨です。

于 2013-06-06T17:16:44.303 に答える
0

中に全部入れusernamesます$inactive_user[]

    $inactive_user = array();
while($rows = mysqli_fetch_array($result){
    $inactive_user[] = $rows['username'];
}

次に、配列をループして、すべてのユーザーをエコーし​​ます。

foreach($inactive_user as $us){
    echo $us;
}

mysql非推奨であるため、またはを使用する必要がありmysqliますPDO

于 2013-06-06T17:16:46.173 に答える