php mysql_query()返回错误

时间:2014-06-08 23:28:13

标签: php mysql

我在php中遇到mysql_query函数的问题,这个代码中的确切问题

function cierraSesion($cookie) {
    $fecha = date("Y-m-d");
    $hora = date("H:i:s");
    global $connection;
    $query = "UPDATE conection SET FEC_DESCONEXION = '$fecha', FEC_HORADESCON = '$hora' WHERE VAR_COOKIE = '$cookie'";
    mysql_query($query, $connection) or die("error:" . mysql_error());
    }

当我执行此代码时,我收到此错误:警告:mysql_query():提供的参数不是有效的MySQL-Link资源

现在,您可以认为它是“$ connection”变量的一个问题,但我在同一个文件中的其他60个函数中使用完全相同的变量没有任何问题,我已经检查了使用die进行输出的查询( $ query)并手动执行它以检查任何查询错误,但工作正常。

以下是工作函数的示例:

function abrirSesion($nombre, $sesion) {
    $fecha = date("Y-m-d");
    $hora = date("H:i:s");
    $fechaf = date("Y-m-d", strtotime("+30 minutes"));
    $horaf = date("H:i:s", strtotime("+30 minutes"));
    global $connection;
    $ip = get_client_ip();
    $query = "INSERT INTO conection (VAR_IDUSUARIO, FEC_CONEXION, FEC_HORACONEX, FEC_DESCONEXION, FEC_HORADESCON, VAR_IP, VAR_COOKIE)
                  VALUES ('$nombre', '$fecha', '$hora', '$fechaf', '$horaf', '$ip', '$sesion');";
    mysql_query($query, $connection) or die("error:" . mysql_error());
}

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

在您的函数中,$connection超出了函数的范围。所以,即使它已经被设置在其他地方,你的功能也不会被看到。你可以将它全球化,但这是一种可怕的编码方式,因为它很复杂,弄清楚你实际引用的变量(只需要一个人重新定义$connection来破坏你的功能)。

这里的最佳做法是将变量注入传递参数

function cierraSesion($cookie, $connection) {
    /** code removed to highlight solution */
    mysql_query($query, $connection) or die("error:" . mysql_error());
}

这样,您就不会处理猜测global变量等问题。

我认为您知道mysql_querydeprecated所以我只需添加subtle reminder