2013-11-22 45 views
0

我有一個名爲extractFromID()的文件中名爲auxiliary.php的php輔助函數,它查詢數據庫中特定行的表中具有特定的ID值,然後從該行提取所有列。從另一個函數訪問從sql表中提取的行

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); 
    } 
} 

從另一個文件,我想用

<?php 

include('auxiliary.php'); 

extractFromID(); 

雖然,我似乎無法訪問所提取的值來訪問從$行)的功能extractFromID(提取的變量,因爲我得到未定義的索引錯誤。我究竟做錯了什麼?

+0

聽起來像那些SESSION變量沒有設置... – Ing

+0

extract()定義在哪裏?此外,您不會顯示您嘗試訪問$行的位置。 extractFromID()調用之後?這是一個本地範圍,所以顯然你不能訪問它:http://php.net/manual/en/language.variables.scope.php – cen

+0

不要使用mysql_ *函數。它已被棄用,不再維護! http://www.php.net/manual/en/function.mysql-connect.php /改爲使用mysqli_ *或PDO! http://php.net/manual/en/book.pdo.php –

回答

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變量之前,在頁面的頂部。那意味着它們是不確定的。

+0

非常感謝,這解決了我的問題。 –

相關問題