1

我正在关注 2007 年编写的教程,他们让我用这段代码创建这个函数。如果我不创建该功能,而只是在网页中对其进行硬编码,则它可以工作。这是代码:

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 回答