2011-07-05 89 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測量,或投。)

相關問題