php - 功能有时只工作

标签 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())");
}

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

最佳答案

首先,您在 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 ...

关于php - 功能有时只工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597422/

相关文章:

PHP + PDO : Bind null if param is empty

php - 在 Laravel 中检索可填写字段

PHP URL 重写

php - 如何从mysql获取替代记录?

mysql 连接查询 - QUERY

mysql - 当 TableB 缺少一个字段时,使用 * 将记录从 TableA 插入到 TableB

php - 用于表单验证的 jQuery post 函数只允许 alert() 显示返回的数据

mysql - Spark 1.4.1 : Issue when reading MySQL BigInt columns

mysql - 根据同一列选择两个值

php - 无法通过 PDO_ODBC 从 Access 检索 UTF-8 重音字符