我在名为auxiliary.php的文件中有一个名为extractFromID()的php辅助函数,它在数据库中查询具有特定ID值的表中的特定行,然后从该行中提取所有列。
function extractFromID() {
$connect = mysql_connect("localhost", "root","") or die ("erro a abrir a ligação.");
mysql_select_db ("hospitaldatabase");
$query = 'SELECT * FROM ' .$_SESSION['listtype']. ' WHERE (ID_' .$_SESSION['listtype']. '="'.$_SESSION['id'].'")';
$results = mysql_query($query) or die(mysql_error());
while($rows = mysql_fetch_array($results){
extract($rows);
}
}
从另一个文件,我试图使用
从$ rows访问函数extractFromID()提取的变量<?php
include('auxiliary.php');
extractFromID();
虽然,我似乎无法访问提取的值,因为我得到了未定义的索引错误。我做错了什么?
答案 0 :(得分:2)
您需要了解变量范围。在函数内声明变量时,其范围仅限于该函数。您可以通过将其声明为$GLOBAL
来扩展其范围,但在您的情况下,最佳解决方案是return
您要使用的值
function extractFromID() {
$connect = mysql_connect("localhost", "root","") or die ("erro a abrir a ligação.");
mysql_select_db ("hospitaldatabase");
$query = 'SELECT * FROM ' .$_SESSION['listtype']. ' WHERE (ID_' .$_SESSION['listtype']. '="'.$_SESSION['id'].'")';
$results = mysql_query($query) or die(mysql_error());
$data = array();
while($rows = mysql_fetch_assoc($results)){
$data[] = $rows;
}
return $data;
}
$myvars = extractFromId();
echo $myvars[0]['fieldname'];
对于未定义的变量,在设置session_start()
变量之前,您可能没有在页面顶部调用$_SESSION
。这意味着它们是未定义的。