所以我有这个功能add_log
:
function add_log($username, $action) {
$l_con = new con();
$log_action = $l_con->connect();
// IP to put in database
$ip_orig = $this->getIP();
$newa_ip = ip2long($ip_orig);
$prepara = $log_action->query("INSERT INTO log VALUES ('$username',
'$action', '$newa_ip', CURDATE(), NOW())");
}
当我在我的注册表单中使用它时,它完美地工作并插入数据库中。但是在登录脚本或其他任何地方它都不起作用。我甚至尝试使用奇怪的名字,我确实没有使用过。我尝试在登录脚本之外使用它,但仍然没有。
答案 0 :(得分:1)
首先,您缺少SQL语句中的可选列声明。通常你会将它们定义为:
INSERT INTO table (COLUMN1, COLUMN2, COLUMNN) VALUES ('a', 'b', 'n...');
此外,在使用ip2long
时,请注意您可以直接在SQL语句中执行此操作:
INSERT INTO log VALUES ('$username', '$action', INET_ATON('$new_ip'), CURDATE(), NOW())
要进行检索,您可以执行long2ip
或在SQL中SELECT INET_NTOA(IP) as IP ...
答案 1 :(得分:0)
确保$ username或$ action中没有引号,因为它会破坏查询。此外,我建议使用PDO或类似的东西,它会使任何报价无关紧要。