2

$uid からのレコードが $timestamp に基づいて今日から存在するかどうか、mysql チェックを実行しようとしています。存在しない場合は、INSERT を実行します。

//EXAMPLE RECORD FROM TABLE VOTE
--- #vote_fb_uid# --- #vote_time#
     665414807        1369219044

tjt

//STEP 1 - do a look up on $uid and check with timestamp $today

        $timestamp = $this->time;
        $date = date('Y-m-d', $timestamp);
        $today = date('Y-m-d');

        $sql = "
        SELECT * FROM vote WHERE
        vote_fb_uid = '$this->fb_uid',
        WHERE vote_time = '$CHECK_IF_THERE_IS_AN_ENTRY_FROM_TODAY'";

        $res = mysql_query($sql) or die( mysql_error());

//STEP 2 - If no records are found for today - then we do an INSERT

        if($no_record_for_today) {
            $sql = sprintf("
            INSERT INTO vote(
            vote_fb_uid,
            vote_time)
            VALUES ('%s','%s')",
            mysql_real_escape_string($this->fb_uid),
            mysql_real_escape_string($this->time));

            $res = mysql_query($sql) or die( mysql_error());
        }

明らかに、ルックアップのためのSQL部分に苦労しています-これまたは同様のことを行う組み込みのSQL関数がないかどうか疑問に思っていますか?

4

4 に答える 4

1

過去 24 時間以内に投票したかどうかを確認するには:

SELECT * 
FROM vote 
WHERE vote_fb_uid = '$this->fb_uid'
AND   FROM_UNIXTIME(vote_time) >= DATE_SUB(NOW(), INTERVAL 1 DAY)

同日に限定したい場合 (2013.05.21 23:55 と 2013.05.22 00:05 に投稿できることを意味します)

SELECT *
FROM vote
WHERE vote_fb_uid = '$this->fb_uid'
AND   DATE(FROM_UNIXTIME(vote_time)) = DATE(NOW())
于 2013-05-22T11:18:05.070 に答える
0

CURDATE()

関数が文字列または数値コンテキストで使用されているかどうかに応じて、現在の日付を ' YYYY-MM-DD' または形式の値として返します。YYYYMMDD

mysql> SELECT CURDATE();
        -> '2008-06-13'
mysql> SELECT CURDATE() + 0;
        -> 20080613
于 2013-05-22T11:15:10.063 に答える
0

クエリ$sql構文エラーがあります。2 つの times 句を使用WHEREして正しい構文を使用し、where で 2 つ以上の句を使用 ANDしてそれらを結合し、今日のエントリを持たないレコードのみを取得しDATE_SUB、1 日間隔で使用できます

SELECT * 
FROM vote 
WHERE vote_fb_uid = '$this->fb_uid',
AND vote_time <= DATE_SUB(vote_time, INTERVAL 1 DAY)
于 2013-05-22T11:19:45.370 に答える
0

これを試して:

 $today = date('Y-m-d'); //change it to timestamp if you want in timestamp
 $sql = "
        SELECT count(*) as total FROM vote WHERE
        vote_fb_uid = '$this->fb_uid' and
        vote_time = '$today'";

        $res = mysql_query($sql) or die( mysql_error());


        if($res[0]['total'] < 1){
                $sql = sprintf("
            INSERT INTO vote(
            vote_fb_uid,
            vote_time)
            VALUES ('%s','%s')",
            mysql_real_escape_string($this->fb_uid),
            mysql_real_escape_string($this->time));

            $res = mysql_query($sql) or die( mysql_error());
            } else{
        //return error("custom","","Already Inserted.");    
        echo "already inserted";
    }
于 2013-05-22T11:18:11.877 に答える