这是我的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);
答案 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注入攻击。