我如何包含一个PHP文件,并在另一个PHP文件中获取函数值?

时间:2015-08-14 21:44:07

标签: php mysql ajax

所以我有2个文件,一个是mainvariables.php& load_more.php。 load_more.php是一个php文件,因为我对它进行了ajax调用。 mainvariables.php文件有1个函数。

这很奇怪,因为在我的header.php文件中,我包含了mainvariables.php并获取了返回的值,但是当我尝试使用load_more.php文件时,它不起作用。

mainvariables.php

Node.js

load_more.php

<?php 
function mainVariables(){
    global $pdo;

    //getting school id for switch statment
    $schoolId = (isset($_GET['id']) ? $_GET['id']:NULL);
    if ($schoolId) {
        $sql = 'SELECT * FROM schools WHERE id = :id';
        $query = $pdo->prepare($sql);
        $query->execute(array(':id' => $schoolId));
    }else {
        echo "Not Working";
    }
    //all values of current school
    return  $query->fetchAll(PDO::FETCH_ASSOC);
}

?>

例如我的header.php文件是这样的:

<?php 
// including the config file
require('config.php');
//pdo connct for config.php file
$pdo = connect();
//Include  main variables function 
include('php/mainvariables.php');
//return of main variables function
$specificSchool = mainVariables();

//School Variables
$shcoolOfficialId = $specificSchool[0]["id"];

switch ($shcoolOfficialId) {
    case 1:
         echo "yes";
        break;

    case 2:
        echo "no";
        break;

    default:
        echo "There are no more stories to load.";
        break;
}

?>

header.php确实有效,但load_more.php没有。我收到错误:在mainvariables.php的第15行调用null上的成员函数fetchAll()。这是返回查询的行。它还说Undefined变量:同一行的查询。

谢谢你

2 个答案:

答案 0 :(得分:4)

问题在于这句话:

return $query->fetchAll(PDO::FETCH_ASSOC);

如果前面的if语句的计算结果为false,则永远不会定义$query。如果$schoolId不存在,则返回不同的值,并在将其用于脚本的其余部分之前检查结果。

答案 1 :(得分:2)

您在$query的范围内定义if statement,因此尚未在if statement之外创建变量,因此当您运行此变量时,

return  $query->fetchAll(PDO::FETCH_ASSOC);

它会失败。你为什么不尝试这个,

function mainVariables(){
    global $pdo;

    $query = null;

    //getting school id for switch statment
    $schoolId = (isset($_GET['id']) ? $_GET['id']:NULL);
    if ($schoolId) {
        $sql = 'SELECT * FROM schools WHERE id = :id';
        $query = $pdo->prepare($sql);
        $query->execute(array(':id' => $schoolId));
    }else {
        echo "Not Working";
    }
                //all values of current school
    return  $query->fetchAll(PDO::FETCH_ASSOC);
}

修改1

我将结果的提取放在if statement中,因此只有它才能获取该部分,这样您就会得到错误,而不需要在{}之外定义$query if statement

function mainVariables(){
    global $pdo;

    //getting school id for switch statment
    $schoolId = (isset($_GET['id']) ? $_GET['id']:NULL);
    if ($schoolId) {
        $sql = 'SELECT * FROM schools WHERE id = :id';
        $query = $pdo->prepare($sql);
        $query->execute(array(':id' => $schoolId));

        //all values of current school
        return  $query->fetchAll(PDO::FETCH_ASSOC);
    }else {
        echo "Not Working";
    }
}