1

私は2007年に書かれたチュートリアルに従っており、このコードを使用してこの関数を作成してもらいます。関数を作成せず、Webページにハードコードするだけで機能します。コードは次のとおりです。

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") 
4

3 に答える 3

2

変数のスコープは、変数が定義されているコンテキストです。ほとんどの場合、すべてのPHP変数には単一のスコープしかありません。この単一のスコープは、含まれているファイルと必要なファイルにも及びます。

変数$connectionはグローバルスコープにあります。これにアクセスするには、関数内にこれを含めます。

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

于 2012-10-14T03:56:36.953 に答える
1
function getAllSubjects(){
    global $connection;
    $query = "SELECT * 
            FROM subjects 
            ORDER BY position ASC";
    $subjectSet = mysql_query( $query, $connection);
    confirmQuery($subjectSet);
    return $subjectSet;
}
于 2012-10-14T03:56:13.433 に答える
1

問題はそれ$connectionが範囲外であるということですgetAllSubjects()

globalキーワードを使用して、関数のスコープに含めてみてください。

function getAllSubjects() {
    global $connection;
    //...
于 2012-10-14T03:57:50.980 に答える