2014-06-08 3 views
-1

나는이 코드를 실행할 때이 오류가 PHP에서 상 mysql_query 기능이 코드의 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 개의 함수에서 똑같은 변수를 사용할 수 있습니다. 문제는, 내가 죽은 ($ 쿼리)와 출력을 만드는 쿼리를 확인하고 쿼리 실수를 확인하기 위해 수동으로 실행하지만, 잘 작동합니다. 여기

은 작업 기능의 예입니다 : 당신이 내게 줄 수있는 모든 도움을

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

mysqli 또는 PDO로 전환하는 것을 고려해야합니다. –

+0

저는 팀과 일하며, 현재 스위치를 사용하고 싶지 않습니다. 기능이 중단 되더라도 PHP 팀이 제거 할 때 자신의 의견을 바꿀 수도 있습니다. – nastrand

+0

_you는 "$ connection"변수로 인해 문제가 있다고 생각할 수 있습니다 .- 그 메시지가 정확히 무엇을 말하고 있는지 생각할 것입니다. 다른 곳에서 사용 해본 적이 없으므로 문제가 여기에 있습니다. ** this ** 함수를 호출하기 전에 초기화됩니까? –

답변

0

함수에서 $connection은 함수 범위 밖에 있습니다. 따라서 이미 다른 곳에 설정되어 있어도 함수에서 해당 설정을 볼 수 없습니다. 이를 세계화 할 수는 있지만 코드를 작성하는 것은 끔찍한 방법입니다. 실제로 참조하는 변수를 알아 내기가 복잡하기 때문입니다 (함수를 중단하기 위해 $connection을 재정의하는 사람이 전부입니다).

여기에 가장 좋은 방법은

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

이 방법, 당신은에 대한 global 변수를 추측하고 같은 취급하지 않는 전달 된 매개 변수로 변수를 주입하는 것입니다.

그리고 나는 이 deprecated 인 것을 알고 있다고 가정합니다. 따라서 subtle reminder을 추가 할 것입니다.