2012-10-14 88 views
1

我正在學習2007年編寫的教程,他們讓我用這段代碼創建了這個函數。 如果我沒有創建該功能,只是在它工作的網頁上進行硬編碼。下面是代碼:在變量中使用PHP函數

function getAllSubjects(){ 
$query = "SELECT * 
     FROM subjects 
     ORDER BY position ASC"; 
$subjectSet = mysql_query($query, $connection); 
confirmQuery($subjectSet); 
return $subjectSet; 
} 

我這是怎麼實現它在網頁中:

$querryArray = getAllSubjects(); 

當我運行代碼我得到一個錯誤,指出:

" Notice: Undefined variable: connection in " 

抱怨其來自getAllSubjects()函數。我在調用此代碼之前調用的文件中創建了$connection變量,應該不是很好嗎?我稱他們的順序:

require_once("includes/connection.php") 
require_once("includes/functions.php") 

回答

2

變量的範圍即它被定義的上下文。大多數情況下,所有PHP變量只有一個範圍。這個單一的範圍跨越了包含和必需的文件。

您的變量$ connection位於Global Scope中。要訪問它包含這個自己的函數中:

function getAllSubjects(){ 
global $connection; 
$query = "SELECT * 
     FROM subjects 
     ORDER BY position ASC"; 
$subjectSet = mysql_query($query, $connection); 
confirmQuery($subjectSet); 
return $subjectSet; 
} 

注意:檢查此鏈接爲一個更詳細的解釋http://php.net/manual/en/language.variables.scope.php

1
function getAllSubjects(){ 
    global $connection; 
    $query = "SELECT * 
      FROM subjects 
      ORDER BY position ASC"; 
    $subjectSet = mysql_query($query, $connection); 
    confirmQuery($subjectSet); 
    return $subjectSet; 
} 
1

的問題是,$connectiongetAllSubjects()

範圍之外使用global嘗試關鍵字將其包含在函數的範圍內。

function getAllSubjects() { 
    global $connection; 
    //...