2013-10-01 139 views
0

我目前正在处理脚本。当用户发布内容并且时间差小于5分钟时,用户无法发帖。如果超过5分钟,他可以发一个帖子。我认为这段代码可以工作,但是我得到了一个mysql_fetch_array错误。我的代码有什么问题?DATEDIFF和NOW()mysql_fetch_array错误

if ($db_found) 
{ 
$check="SELECT * DATEDIFF(MINUTE, send_time, CURRENT_TIMESTAMP) FROM bloopp WHERE email = '$email' ORDER BY id DESC LIMIT 1"; 
$res = mysql_query($check); 
$data = mysql_fetch_array($res, MYSQLI_NUM); 
    if($data[0] < 5) 
    { 
    echo "You posted not so long ago.<br/>"; 
    } 
    else 
    { 
    $sql="INSERT INTO bloopp (bloopp, browser, medium, send_time, email) VALUES ('$bloopp', '$browser', 'mobile', NOW(), '$email')"; 
    $result = mysql_query($sql); 
    if($result) 
    { 
    header('Location: index.php'); 
    } 
    else 
    { 
     echo "Something has gone wrong. We’re sorry."; 
    } 
    } 
} 
else 
{ 
echo "ERROR"; 
} 

mysql_close(); 
?> 
+1

只是一个建议,不要使用mysql_ *函数。使用mysqli或PDO模块。选中此项:http://php.net/manual/en/function.mysql-query.php –

+0

如果您希望在执行数据库操作时获取有关错误的详细信息,请使用mysql_error()函数。 另请注意,您使用的功能已被弃用,并将在未来的PHP版本中删除。你可以在这里阅读更多:http://www.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated。 –

回答

1

你后马上用,失踪*

SELECT * DATEDIFF(MINUTE, send_time, CURRENT_TIMESTAMP) 

变化

SELECT * ,DATEDIFF(MINUTE, send_time, CURRENT_TIMESTAMP) AS `diff` 

其更好地给当你在查询上自定义列别名

+0

太棒了!这已经起作用了,但是我怎么做if语句呢?我如何参考'差异'?像“$差异”? –

+1

@ bloopp-它可以通过使用'mysql_fetch_array($ res,MYSQL_ASSOC)'来使用'$ data ['diff']';'参考这里http://php.net/manual/en/function.mysql-fetch- array.php –

+0

完美地工作。虽然我不得不改变别的东西(DATEDIFF必须是TIMESTAMPDIFF)! –

0
SELECT DATEDIFF(MINUTE, send_time, CURRENT_TIMESTAMP) 

删除*

或保留它,但后面加逗号。