MySQL错误:列'时间'不能为空

时间:2011-08-19 17:56:56

标签: php mysql

  

可能重复:
  MySQL ERROR: Column 'Time' cannot be null

我收到错误:列'Time'不能为null,这是我的代码:

$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);

我只在“用户名”重复时才会收到错误,否则会插入正常。

如果您需要更多信息/需要我做任何事情,请发帖,我会尽快回复,感谢所有帮助的人!

2 个答案:

答案 0 :(得分:3)

DATE_ADD()无法处理TIME数据类型,第一个参数只能是DATE。同时将'100'分配到TIME列会产生'00:01:00',我认为这不是你想要的。我相信你想要做的事情,你应该使用TIMESTAMP类型的列或UNSIGNED INT,并用简单的+操作替换你的DATE_ADD()。

答案 1 :(得分:0)

您是否将值设为$time?如果""未通过,您可以将代码初始化为$_GET['time'],这可能会导致您的问题。