Possible Duplicate:
MySQL ERROR: Column 'Time' cannot be nullMySQL錯誤:列「時間」不能爲空
我收到錯誤:列「時間」不能爲空,這是我的代碼:
$table = "highscores";
// Initialization
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME, $conn);
// Error checking
if(!$conn) {
die('Could not connect ' . mysql_error());
}
if($_GET['secret'] != "5920239") {
header("Location: /404.html");
exit();
}
// Localize the GET variables
$user = isset($_GET['username']) ? $_GET['username'] : "";
$time = isset($_GET['time']) ? $_GET['time'] : "";
$videos = isset($_GET['videos']) ? $_GET['videos'] : "";
$credits = isset($_GET['credits']) ? $_GET['credits'] : "";
// Protect against sql injections
$user = mysql_real_escape_string($user);
$time = mysql_real_escape_string($time);
$videos = mysql_real_escape_string($videos);
$credits = mysql_real_escape_string($credits);
$secret = mysql_real_escape_string($secret);
// Insert/UPDATE
$retval = mysql_query("
INSERT INTO
$table(Username, Time, Videos, Credits)
VALUES
('$user', '$time', '$videos', '$credits')
ON DUPLICATE KEY UPDATE
Time = DATE_ADD(IFNULL(Time,now()),INTERVAL '$time' SECOND),
Videos = Videos+'$videos',
Credits = Credits+'$credits'
",
$conn
);
// End Query
if($retval) {
echo "Success! Updated $user with Time: $time - Videos: $videos - Credits: $credits";
} else {
echo "<b>ERROR:</b><br>" . mysql_error();
}
mysql_close($conn);
我只能得到錯誤時'用戶名'是重複的,否則會插入正常。
如果您需要任何更多信息/需要我做任何事情,請發佈,我會盡快回復,在此先感謝大家幫助!
'Time'列的類型是什麼? 「CREATE TABLE」語句中的完整列定義可能會有所幫助。 – nobody
問題在於Time = DATE_ADD(IFNULL(Time,now()),INTERVAL'$ time'SECOND)' - 某種程度上它將Time設置爲NULL。也許是因爲$時間是不確定的?由於我不知道你的輸入是什麼樣的,我不確定確切的原因,但這是你需要調查的地方。 – Flimzy
嘗試使用'$ time = int($ time);'而不是'$ time = mysql_real_escape_string($ time);'並用'INTERVAL $ time SECOND'替換'INTERVAL'$ time'SECOND'。另外,如果您使用預留的佔位符查詢,而不是手動轉義每個變量,您將不太可能讓安全問題漏洞化。 –