DATETIME保存为0000-00-00 00:00:00

时间:2013-09-01 00:06:23

标签: php mysql database

这是我的sql代码我已经运行了相同的代码很多次并且从来没有遇到过任何问题,但今天或某种原因是。

mysqli_query($con, "
    INSERT INTO 'u_visits'
        ('ip_adress','dates')
    VALUES
        ('$ip',now())
    ON DUPLICATE KEY UPDATE visits = visits + 1
");
mysqli_close($con);

一切正常,除了我的日期行添加为0000-00-00 00:00:00

这是我如何得到ip地址:

//Test if it is a shared client
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    //Is it a proxy address
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

$ip = ip2long($ip);

2 个答案:

答案 0 :(得分:0)

如下:

INSERT INTO `u_visits` (`ip_address`,`dates`) 
VALUES (
        '$ip', CONCAT(CURDATE(), ' ', CURTIME() )
       )
       ON DUPLICATE KEY UPDATE visits = visits +1

您应该查看绑定参数以获得正确的SQL注入预防,因为您可以保持原样。

就我个人而言,我认为您的查询失败是因为您使用字符串dilemas '而不是使用反引号(`)将表名/列名指定为表。所以MySQL可能会尝试将必要的名称迭代为字符串而不是表名/列

答案 1 :(得分:0)

尝试明确设置:

  INSERT INTO 'u_visits' SET ip_adress = '$ip', dates=NOW() ON ...

另外,正如其他人提到的那样,绝对确定已经正确检查了$ ip,否则你会受到SQL注入攻击。