2013-01-05 4 views
2

쿼리를 실행하는 데 여러 함수가있는 데이터베이스 클래스가 있습니다.쿼리 함수가 신비하게 깨졌습니다.

public function query($query) { 
    return $this->_link->query($query); 
} 

$이 -> _ 링크 ->이 여기서 일해야하므로 쿼리가 다른 경우에 작동합니다 : 그 중 하나는 그들 모두의 간단합니다. 클래스의 인스턴스가있는 파일에서이 작업을 수행합니다.

function createLineChart() { 

    $query = "select * from tags"; 
    $result = $db->query($query); 

    // do something with result 
} 

createLineChart(); 

$ 결과 행에서 중단됩니다. 쿼리도 유효합니다, 나는 그것을 testid했습니다. 내가 놓친 게 있니? $db 클래스 변수 인 경우

답변

2

귀하의 문제는 $dbcreateLineChart() 기능의 범위 밖이다. 당신도 글로벌 방법을 사용할 수 있습니다

function createLineChart() { 
    global $db; // <-- make the db var become available 
    $query = "select * from tags"; 
    $result = $db->query($query); 

    // do something with result 
} 

또는 인수로 함수에 $db 개체를 전달할 :

function createLineChart($db) { 

    $query = "select * from tags"; 
    $result = $db->query($query); 

    // do something with result 
} 

createLineChart($db); 

더 많은 정보에 대한 Variable Scope on the Manual합니다.

+0

감사합니다. 실제로 이것이 문제였습니다. $ db 함수 밖에서 선언되었습니다. – Veltar

1

, 당신은으로 참조 할 필요가 :

$result = $this->db->query($query); 
+1

'createLineChart' 함수가 클래스 외부에 있다고 생각합니다.이 경우'$ db'는 정의되지 않습니다. OP는 * 클래스의 인스턴스가있는 파일에서 * –

+0

이것은 전혀 문제가되지 않습니다. 'createLineChart()'는 분명히 객체의 메소드는 아니지만 표준 사용자 정의 함수는 어떤 클래스에도 링크되어 있지 않습니다. – MrCode

2
function createLineChart() { 
    var_dump($db); 
    // this should probably return 'undefined' 
    global $db; 
    // so globalize it! 
    $query = "select * from tags"; 
    $result = $db->query($query); 
    // do something with result 
} 
관련 문제