功能有时只能工作

时间:2012-07-22 02:40:03

标签: php mysql pdo

所以我有这个功能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())");
}

当我在我的注册表单中使用它时,它完美地工作并插入数据库中。但是在登录脚本或其他任何地方它都不起作用。我甚至尝试使用奇怪的名字,我确实没有使用过。我尝试在登录脚本之外使用它,但仍然没有。

2 个答案:

答案 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或类似的东西,它会使任何报价无关紧要。