-3

私はPHPが初めてで、テーブルがあります

+-----------------------------------------------------------------+
|                              seeker                             |
+----+-------+----------+---------------+-------------------------+
| id | name  | password | register_date | login_date | limit_date |
+----+-------+----------+---------------+------------+------------+
| 01 | ali   |   ****   |  2012-02-08   | 2012-02-09 | 2012-03-09 |
| 02 | hamza |   ****   |  2012-04-10   | 0000-00-00 | 0000-00-00 |
| 03 | sam   |   ****   |  2012-04-15   | 0000-00-00 | 0000-00-00 |
+----+-------+----------+---------------+------------+------------+

制限日=現在の日付の場合、データを削除するために2つのクエリを適用する必要があります

ユーザー login_date が '0000-00-00' で、その (register_date - 現在の日付) >= 30 の場合にデータを削除する秒

私の最初のクエリは正しく実装されています

私の 2 番目のクエリでは、現在の日付から register_date を差し引いて日数を見つけています。日数が 30 以上の場合は、そのユーザーを削除します。

私の問題は、単一のユーザーが日数>= 30を返すと、login_date = '0000-00-00'のすべてのユーザーが削除されることです。ここに私のコードがあります

    //code for  delete user where (current date - register date)>=30
    $qry="select * from seeker where login_date='0000-00-00'";
    $rs= mysql_query($qry, $con);
     $res=mysql_num_rows($rs);
    echo "total rows of zero dates "."".$res;
    echo "<br>";
    if($res!=0)
    {
        echo "user exist of date='0000-00-00'";
        echo"<br>";
        $qqq="select * from seeker where login_date='0000-00-00'";
            $rsq= mysql_query($qqq, $con);
            while($resq=mysql_fetch_array($rsq))
            //echo $resq;
        {
          $r=$resq['c_date'];
          echo $r;
          $reg_date = strtotime($r); 
          echo "<br>";

    //current date
        $c= date("Y-m-d");
        echo $c;
        //echo "current date".""."<br>";
        $current_date = strtotime($c); 
        echo "<br>";

         //date difference
          $datediff = $current_date - $reg_date;
          $days = floor($datediff/(60*60*24));
          echo "days"."".$days;
          echo "<br>";

        if($days>=30)
        {
        $qry1="delete from seeker where $days = '30'";
        $rs1= mysql_query($qry1, $con);
        echo $qry1;
        echo "<br>";
        echo "<br>";
        }
      }

}
// code for delete user where current date = limit date
$qry3="select * from seeker where current_date = limit_date";
$rs3= mysql_query($qry3, $con);
$res3=mysql_num_rows($rs3);
if($res3!=0)
{

        $q= "delete from seeker where current_date = limit_date";
        $rq=mysql_query($q, $con);
        echo "$q";
        echo "<br>";
}

どこで間違えたのか教えてください。日が 30 日以上のユーザーのみを削除したいのですが、login_date ='0000-00-00' のすべてのユーザーが削除されました

for example if current date is 2012-01-10. it will not delete user
if current date is 2012-05-10.. it must delete only "hamza" but it delets "sam" too 

私を助けてください、私は学生であり、PHPが初めてです。前もって感謝します

4

2 に答える 2

1

以下に示すように、クエリでDATEDIFF(time1 ,time2)関数と関数を試してくださいNOW()

DELETE FROM seeker WHERE DATEDIFF( NOW( ) , `register_date` )  >= 30 AND 
`login_date` = '0000-00-00'

ありがとう。

于 2012-05-10T06:26:24.557 に答える
0

次のクエリを使用します。

DELETE FROM `seeker` 
WHERE `register_date`>DATE_SUB(NOW(), INTERVAL 30 day)
于 2012-05-10T06:14:45.597 に答える