2011-07-05 67 views
1

我正在制作一个系统,将用户的IP与上次发布内容一起保存到表中。 首先,我检查用户的IP的一个已经存在的纪录获取SQLSTATE [HY000]:一般错误,但仍然执行查询

SELECT lastpost FROM users WHERE ip = '$IP' 

然后我检查查询的结果是否为空,如果是则意味着用户的IP是不存在的,它应该被记录下来,所以我继续做这个查询:

INSERT INTO users (ip, lastpost) VALUES ('$IP', '$ctime') 

哪里$IP是用户的IP获取使用$_SERVER['REMOTE_ADDR']$ctime是创建using date("Y-m-j H:i:s")时间字符串。 即使执行后查询后的数据存在到表中,我不断收到错误

SQLSTATE[HY000]: General error 

,这是由它本身,而不是非常有帮助。我想了解我在这里做错了什么。提前致谢。

PS:我会用这个问题也问我怎么可以比较,使用查询,我与PHP的date()随着时间的表中已经存在(类型为“日期时间”),以计算出的时间看看用date()计算出的值是否大于数据库中的值至少一分钟。

+0

检查事件日志服务器上。 –

+0

我很难找到它,它位于哪里? (我正在使用XAMPP) –

+0

日志文件应该位于D:/xampp/mysql/data/mysql.log,但它在该文件夹中完全不存在。 –

回答

1

我会先尝试将$ctime作为日期时间CAST('$ctime' AS DATETIME)来查看是否有效。

测试分钟差使用TIMEDIFF()

SELECT IF(TIMEDIFF(CAST('$ctime' AS DATETIME), lastpost) > CAST('00:01:00.000000' AS DATETIME), /*do this*/, /*else do this*/) 

这将返回一个时间差。如果时差为负,则$ctime早于lastpost。但是你可以在这里获得相当精细的粒度。

看看上述是否有帮助。

(呵呵,我发现这一切通过谷歌和搜索MySQL和DATEDIFF,timeDiff测量,或投。)

相关问题