我在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());
}
感谢您提供任何帮助。
答案 0 :(得分:0)
在您的函数中,$connection
超出了函数的范围。所以,即使它已经被设置在其他地方,你的功能也不会被看到。你可以将它全球化,但这是一种可怕的编码方式,因为它很复杂,弄清楚你实际引用的变量(只需要一个人重新定义$connection
来破坏你的功能)。
这里的最佳做法是将变量注入传递参数
function cierraSesion($cookie, $connection) {
/** code removed to highlight solution */
mysql_query($query, $connection) or die("error:" . mysql_error());
}
这样,您就不会处理猜测global
变量等问题。
我认为您知道mysql_query
是deprecated所以我只需添加subtle reminder。