获取SQLSTATE [HY000]:一般错误但无论如何都要执行查询

时间:2011-07-05 12:34:46

标签: php mysql

我正在建立一个系统,将用户的IP与上次发布内容的时间一起保存到表中。 首先,我用

检查用户IP的已存在记录
SELECT lastpost FROM  users WHERE ip = '$IP'

然后检查该查询的结果是否为空,如果是,则表示用户的IP不存在且应该记录,所以我继续执行此查询:

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

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

SQLSTATE[HY000]: General error

这本身并不是很有帮助。我想知道我在这里做错了什么。提前谢谢。

PS:我将使用这个问题来询问如何使用查询比较我使用PHP date()计算的时间与表中已存在的时间(类型为“datetime”),以查看使用date()计算的值是否大于数据库中的值至少一分钟。

1 个答案:

答案 0 :(得分: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。但是你可以在这里进入相当精细的粒度。

看看上面是否有帮助。

(哦,我通过Google找到了所有这些并搜索了mysql和datediff,timediff或者演员。)