SELECT FROM和INSERT INTO

时间:2013-09-29 10:04:25

标签: php mysql sql select insert

我正在编写一个脚本,但它不起作用。 当用户发帖时,将插入NOW()。我想创建一个脚本,用户只能在他的最后一篇文章与他此时想要发布的帖子相差至少10分钟时发帖。我不想使用cookie,看到人们可以删除它们。

我现在有这个代码,但不知道如何继续前进。谢谢!

if ($db_found) {
    $sql1="SELECT send_time FROM bloopp WHERE email='$email' ORDER BY id DESC LIMIT 1";
    while($row = mysqli_fetch_array($result)) {
        $last_post = $row['send_time'];
    }
    if ($last_post + 600 >= NOW() {
        sql2 = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES
           ('$bloopp', '$browser', 'desktop', NOW(), '$email')";
        $result = mysql_query($sql);
        if($result) {
            header('Location: index.php');
        }
        else {
            echo "ERROR";
        }
    }
}

3 个答案:

答案 0 :(得分:2)

在处理时间时,如果您可以完全依赖数据库,那么它很方便。这避免了将数据库的时间概念与PHP混合在一起,PHP可能位于不同的服务器上和/或具有不同的时间配置。

所以,试着找一个在过去十分钟内制作的帖子,如果没有,你知道你很高兴

SELECT COUNT(*) AS recent_posts
FROM bloopp 
WHERE email=? AND (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(send_time))<600;

答案 1 :(得分:0)

对您的查询:

 sql2 = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES ('$bloopp', '$browser',    'desktop', NOW(), '$email')";
 $result = mysql_query($sql);

不应该

 $sql = "INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES ('$bloopp', '$browser',    'desktop', NOW(), '$email')";

介意sql2 / $ sql替换

答案 2 :(得分:0)

假设你有桌面用户

user_table:
id
email

bloop:
email
browser 
....

Select * from user_table left join ( select max(send_time),email from bloop where email=$email ) max_sel on max_sel.email = user_table.email...

这样的东西会让用户得到他的最新帖子(或者对于没有帖子的新用户为null,检查左侧联接),将日期放在会话中以及当他发布更新时等等,你知道如何这样做。

此致