所以我有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变量:同一行的查询。
谢谢你
答案 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";
}
}